我不想要外部div标签?如何仅使用其代码添加我的responsetext。
这是有效的,但结果不是我想要的。
var newdiv = document.createElement("div");
newdiv.innerHTML = xhr.responseText;
document.getElementById("middleright").replaceChild(newdiv, document.getElementById("moreoption"));
middleright是更多选项的父级。执行此操作后,middleright将成为div的父级而不是responsetext。
我试过这样做。
document.getElementById("middleright").innerhtml += xhr.responseText;
这是我正在寻找的,但它只插入到innerhtml的末尾,我想将它插入中间。
还有其他选择吗?我发布这个问题之前几天谷歌。谢谢你的帮助。
更新
有问题,请看这个
var newdiv = document.createElement("div");
newdiv.innerHTML = xhr.responseText;
var next = document.getElementById("moreoption").nextSibling;
document.getElementById("middleright").removeChild(document.getElementById("moreoption"));
var els = newdiv.childNodes;
var len = els.length;
for (var i=0; i<5; i++) {
next.parentNode.insertBefore(els[i],next);
}
它只会输出直到els [2],我不知道为什么?但是当我这样做的时候。
for (var i=5; i>0; i--) {
next.parentNode.insertBefore(els[i],next);
}
它输出所有,但方向错误。
var addpoint = document.getElementById("moreoption").nextSibling;
var newdiv = document.createElement("div");
newdiv.innerHTML = xhr.responseText;
var next, el = document.getElementById("moreoption");
var parent = el.parentNode;
parent.removeChild( el );
el = newdiv.firstChild;
do {
next = el.nextSibling
parent.insertBefore(el,addpoint);
} while( el = next );
答案 0 :(得分:0)
您可以选择temp div元素内的节点。
document.getElementById("middleright")
.replaceChild( newdiv.firstChild, // select the root node in response text
document.getElementById("moreoption") );
或者您也可以尝试responseText的responseXML intead。
更新
要获取responseText中的所有节点,您应该遍历newdiv
的childNodes。
var next, el = document.getElementById("moreoption");
var parent = el.parentNode;
parent.removeChild( el );
el = newdiv.firstChild;
do {
next = el.nextSibling
parent.appendChild( el );
} while( el = next );