这两者有什么不同:
var div = document.createElement('div');//output -> [object HTMLDivElement]
document.getElementById('container').appendChild(div);
和:
var div = '<div></div>';
document.getElementById('container').appendChild(div);//output -> <div></div>
两者不应该是一样的吗?如果不是,我如何让第二个版本工作?
发布于 2010-05-24 15:14:08
使用JS/DOM引擎,使用string
作为参数调用Element.appendChild
会创建一个新的Text
节点,然后添加。
第一个示例创建一个<div>
元素。第二个示例创建了一个内容为<div></div>
的文本节点。
您的第二个示例相当于:
var div = '<div></div>';
document.getElementById('container').appendChild(document.createTextNode(div));//output -> <div></div>
作为Sarfraz Ahmed mentioned in his answer,您可以通过编写以下代码来使第二个示例按照您希望的方式工作:
var div = '<div></div>';
document.getElementById('container').innerHTML = div;
发布于 2010-05-24 15:12:44
appendChild
确实需要某种类型的HTMLDomNode,比如HTMLDivElement
,而不是字符串。它不知道如何处理字符串。你可以这样做
document.getElementById('container').innerHTML += div;
但我真的更喜欢第一个版本;我更依赖于它来在不同的浏览器上表现出相同的行为。
发布于 2010-05-24 15:11:50
appendChild需要一个元素,所以当你向它发送文本时,它不知道该怎么做。您可能希望考虑使用javascript库来简化某些工作,比如jQuery。你的代码应该是:
$('#container').append('<div></div>');
https://stackoverflow.com/questions/2895318
复制相似问题