您好我正在尝试在一个可疑的div中添加带有SPACE的html; 问题是,使用上面的代码它只返回第一个DIV的内容并忽略其他所有内容。
var tdiv = document.createElement('div');
tdiv.innerHTML = '<div>testing html</div> ';
var replacment = tdiv.firstChild; //
el.insertNode(replacment); // it is just the purpose, "el" is the HTML element
这样就会被删除。
答案 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 = " ";
如果你真的只想要一个带有文本空间的元素,你可以创建一个文本节点:
var div = document.createElement("div");
div.appendChild(document.createTextNode(" "));
再次看一下你的问题,实际上很不清楚你真正在问什么,看来你的问题可能意味着很多不同的东西。所以,这只是你可能要问的一种可能性。
如果要将其添加为元素,则需要将其放在某种容器中,因为非分隔空间本身并不是一个元素。您可以将其包装在这样的<span>
元素中,然后插入<span>
。
var span = document.createElement("span");
span.innerHTML = " ";
el.appendChild(span);
或者,插入带有空格的文本节点也许可以正常工作:
el.appendChild(document.createTextNode(" "));
答案 2 :(得分:0)
Arun P Johny Idea之后,我这样解决了:
var replacement = '<div>testing</div> ',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