获取所有子节点javascript

时间:2015-05-12 07:15:01

标签: javascript

您好我正在尝试在一个可疑的div中添加带有SPACE的html; 问题是,使用上面的代码它只返回第一个DIV的内容并忽略其他所有内容。

var tdiv = document.createElement('div');
tdiv.innerHTML = '<div>testing html</div>&nbsp;';
var replacment = tdiv.firstChild; // 

el.insertNode(replacment); // it is just the purpose, "el" is the HTML element

这样就会被删除。

3 个答案:

答案 0 :(得分:1)

如果您希望将tdiv的所有孩子添加到el,请尝试

var el = document.getElementById('x')
while (tdiv.firstChild) {
    el.appendChild(tdiv.firstChild);
}

演示:Fiddle

答案 1 :(得分:1)

您可以像这样创建一个元素:

var div = document.createElement("div");
div.innerHTML = "&nbsp;";

如果你真的只想要一个带有文本空间的元素,你可以创建一个文本节点:

var div = document.createElement("div");
div.appendChild(document.createTextNode(" "));

再次看一下你的问题,实际上很不清楚你真正在问什么,看来你的问题可能意味着很多不同的东西。所以,这只是你可能要问的一种可能性。

如果要将其添加为元素,则需要将其放在某种容器中,因为非分隔空间本身并不是一个元素。您可以将其包装在这样的<span>元素中,然后插入<span>

var span = document.createElement("span");
span.innerHTML = "&nbsp;";
el.appendChild(span);

或者,插入带有空格的文本节点也许可以正常工作:

el.appendChild(document.createTextNode(" "));

答案 2 :(得分:0)

Arun P Johny Idea之后,我这样解决了:

var replacement = '<div>testing</div>&nbsp;',startAfter,i,tdiv = document.createElement('div');
tdiv.innerHTML = replacment;
replacment=document.createDocumentFragment();
while(i=tdiv.firstChild) replacment.appendChild(i);
startAfter = replacment.lastChild;

 // This is my extra code to the contenteditable div insert and positioning the caret - this.range is my selection range.
 this.range.insertNode(replacment);
 this.range.setStartAfter(startAfter);

谢谢大家,即使是下来的选票:P