2011-04-14 61 views
2

正如你所看到的,我仍然是一個JavaScript的新手 爲什麼它只能追加一次Textnode?當你再次將其添加到其他地方時,第一個消失appendChild數組只附加到最後一個元素

我不需要問題的解決方案我只是好奇是什麼導致了這種行爲。 例子,其中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);  
    } 
} 

這是您使用的唯一textnode所以它的工作原理:

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

回答

2

簡短的回答是DOM是樹,而不是一個網絡。每個節點只能有一個父節點。如果您可以在多個位置添加一個節點,則它將具有多個父級。

+0

好吧,我現在看到。如果我沒有將createTextNode放入一個變量中(甚至不確定是否可以在沒有var的情況下執行它),它會起作用。但是因爲我一直使用相同的變量,所以它總是改變父節點。 謝謝你的教育迴應。 – Jarco 2011-04-14 14:00:32

+0

是的,沒有理由不能繼續創建新節點並添加它們。 – 2011-04-14 14:03:01

相關問題