Javascript replacechild help, дополнительный текст добавлен в текст ответа - PullRequest
0 голосов
/ 29 сентября 2010

Я не хочу внешний тег div? как добавить свой ответный текст только с его кодами.

Это работает, но результат не тот, который я хотел.

var newdiv = document.createElement("div");
newdiv.innerHTML = xhr.responseText;
document.getElementById("middleright").replaceChild(newdiv, document.getElementById("moreoption"));

middleright является родителем moreoptions. после того, как это выполнено, middleright становится родителем div вместо текста ответа.

Я пытался это сделать.

document.getElementById("middleright").innerhtml += xhr.responseText;

Это то, что я ищу, но оно вставляется только в конец innerhtml, я хочу вставить его посередине.

Есть ли альтернатива? Я гуглю в течение нескольких дней, прежде чем отправить этот вопрос. Спасибо за помощь.


UPDATE

есть проблема, посмотрите на это

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);
}

выводит все, но в неправильном направлении.


UPDATE

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 голосов
/ 29 сентября 2010

Вы можете выбрать узел внутри элемента temp div.

document.getElementById("middleright")
    .replaceChild( newdiv.firstChild, // select the root node in response text
                   document.getElementById("moreoption") );

Или вы также можете попробовать responseXML intead responseText.


Обновить

Чтобы получить все узлы в responseText, вы должны пройти по дочерним узлам newdiv.

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 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...