var p = document.getElementById(e),
   nodes = p.querySelectorAll('span');
   for (var i=0; i<nodes.length; i++) {
      node = nodes[i];
      node.innerHTML = ' ';
   }
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 = querySelectorAllとchildNodes = p.childNodes;