Javascript replacechild帮助,额外标记添加到responsetext

时间:2010-09-29 15:30:51

标签: javascript ajax

我不想要外部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 );

1 个答案:

答案 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 );