1
var p = document.getElementById(e),
   nodes = p.querySelectorAll('span');

   for (var i=0; i<nodes.length; i++) {
      node = nodes[i];
      node.innerHTML = '&nbsp;';
   }

console.log(p) と console.log(nodes) の後に作成すると、変更がノードに影響を与えていることがわかりますが、p には影響しません。なぜ、どのようにpに適用するのですか?

私がnodes = p.childNodes;すべてうまくいけば。

それで、主な質問は、なぜそれが動作しchildNodes、動作しないのquerySelectorAllですか?

更新しました

最後に、以下のようなものを追加すると問題を解決できます。

for (var k=0; k<childNodes.length; k++) {
        for (var j=0; j<nodes.length; j++) {    
            if (childNodes[k].id === nodes[j].id) {
                p.replaceChild(nodes[j],childNodes[k]);
            } 
        }   
    }

どこnodes = querySelectorAllchildNodes = p.childNodes;

4

2 に答える 2

1

innerHTMLof をp直接設定するだけです。

p.innerHTML = '&nbsp';

「呼び出された要素から、指定された CSS セレクターのグループに一致するElement.querySelectorAll()すべての要素の非ライブ NodeList を返す」ことに注意してください。descended

したがって、デフォルトでは、これを呼び出している要素はp、返される に含まれませんNodeList

于 2013-06-08T20:16:53.750 に答える