2017-04-13 31 views
1

夥計。我在我創建的模擬網站內創建了一個新的下拉菜單。一切都很好,除了我正在用vanilla Javascript做的練習。我想要做的是創建一個li元素,然後我做同樣的事情,但創建一個新的元素,鏈接的錨。這是我到目前爲止,在JavaScript中創建一個新元素,並嘗試appendChild方法來適應它...沒有工作。是什麼賦予了?

var li = document.createElement('li'); 

對錨元素做了相同的處理。

var a = document.createElement('a'); 

現在我創建一個像這樣的父變量。

var parent = document.getElementById('ul-li-a').getElementsByTagName('li'); 

現在我有一個列表像這樣列出的數組。

[li, li, li, li, li, li, li, li, li, li, li, li] 

這裏是事情對我來說很棘手的地方。然後我試着像這樣的附加子方法...

parent.appendChild(li); 

只是爲了得到這個bs錯誤,說明了這一點。

Uncaught TypeError: parent.appendChild is not a function 
    at <anonymous>:1:8. 

究竟是從整個事情中缺少的東西,我需要理解和實現?

在此先感謝大家。 :)

+0

你通常要將LI元素附加到列表(UL或OL)。所以父母可能應該是對列表元素的引用。 – James

回答

1

變量parent在這種情況下是HTMLCollection。這就是沒有定義功能appendChild的原因。您必須將函數appendChild應用於此數據類型的每個元素。您可以使用此代碼段(ES2015)首先將它轉換成數組,然後使用forEach的功能適用於所有的元素:

[...parent].forEach(x => x.appendChild(li)); 

或者你可以遍歷HTMLCollection(舊校園的Javascript):

for (var i = 0; i < parent.length; i++) { 
    parent[i].appendChild(li); 
} 
相關問題