appendChild到数组只附加到最后一个元素

时间:2011-04-14 13:52:05

标签: javascript dom

正如你所看到的,我仍然是javascript的新手 为什么只能附加一次Textnode?当你在其他地方再次添加它时,第一个消失

我不需要解决问题的方法我只是好奇是什么导致了这种行为。 textnode仅添加到数组的最后一个元素的示例:

function hideAdd(){
    var hide = document.createTextNode('Afbeelding verbergen');
    var afb = collectionToArray(document.getElementsByTagName('img'));  
    afb.pop();
    var divs = [];
    for (i=0; i < afb.length; i++){
        divs.push(afb[i].parentNode);

    }
    console.log(divs);
    for ( i = 0; i < divs.length;i++){
        divs[i].appendChild(hide);      
    }
}

这是您使用唯一文本节点的地方,因此它可以工作:

function hideAdd(){
    var hide = []
    var afb = collectionToArray(document.getElementsByTagName('img'));  
    afb.pop();
    var divs = [];
    for (i=0; i < afb.length; i++){
        divs.push(afb[i].parentNode);
        hide[i] = document.createTextNode('Afbeelding verbergen');

    }
    console.log(divs);
    for ( i = 0; i < divs.length;i++){
        divs[i].appendChild(hide[i]);       
    }
}

1 个答案:

答案 0 :(得分:2)

简短回答是DOM是树,而不是网络。每个节点只能有一个父节点。如果您可以在多个位置添加节点,则它将具有多个父节点。