可以insertBefore插入HTML标签吗?

时间:2012-08-20 06:33:01

标签: javascript

在下面的脚本中,我在DIV的开头插入了一些代码。

    var mydiv = document.getElementById("myDIV");
    var mycontent = document.createElement("p");
    mycontent.insertBefore(document.createTextNode("Hello <b>World</b><br><bR>"));
    mydiv.insertBefore(mycontent,mydiv.firstChild);

在我的网站上,代码将作为文本插入,并忽略HTML格式。有谁知道如何使用javascript将代码插入DIV?

3 个答案:

答案 0 :(得分:2)

您无法插入标记,只能插入DOM节点。 DOM节点可以是文本节点或元素节点(或者您几乎肯定不关心的其他几个节点)。

区别很重要,因为您可以插入<div></div>而不是<div>

创建元素:

var myElement = document.createElement('div');

你的具体例子:

var myContent = document.createElement('p');
myContent.appendChild(document.createTextNode('Hello'));
var bold = document.createElement('b'); // Please don't use presentational elements in 2012
bold.appendChild(document.createTextNode('World');
myContent.appendChild(bold);
myContent.appendChild(document.createElement('br')); // Please don't use line breaks as margin/padding substitutes
myContent.appendChild(document.createElement('br')); 
mydiv.insertBefore(mycontent,mydiv.firstChild);

答案 1 :(得分:1)

您可以与元素和innerHTML结合使用,以获得简单的解决方案:

var mydiv = document.getElementById("myDIV");
var mycontent = document.createElement("p");
mycontent.innerHTML = 'Hello <b>World</b><br><bR>';
mydiv.insertBefore(mycontent, mydiv.firstChild);

答案 2 :(得分:0)

为什么不

var mydiv = document.getElementById("myDIV");
var mycontent = document.createElement("p");
mycontent.innerHTML = "Hello <b>World</b><br><bR>";
mydiv.insertBefore(mycontent,mydiv.firstChild);​