2016-09-08 128 views
0

我有一個ul項正在頁面上顯示在窗體下。Javascript for-of循環數組並將值傳遞到for-of循環ul

我希望在提交表單時在每個li中添加一個鏈接。我有一個鏈接數組,我想要一個循環數組的方法循環並遍歷li,迭代地在每個li上本質上setAttribute。

我的代碼林同是使用動作鉤子(BC它的一個WordPress站點)來監視提交工作,並在行動掛鉤回調函數返回如下:

(function(){ 
var links = ['link1', 'link2', 'link3']; 
var parentList = document.querySelector('.support-list'); 
var listItems = parentList.querySelectorAll('a'); 

for(var listItem of listItems){ 
    for(var link of links){ 
     listItem.href = link; 
     } 
    } 
})() 

到目前爲止,我只能傳入第一個鏈接,我不迭代數組,但我正在迭代li。

+0

[不要在數組中使用'in in'枚舉](http://stackoverflow.com/q/500504/1048572)。或者不要爲'in'調用'for'循環'? – Bergi

+0

聽起來像你真的想'listItems [i] .href = links [i]'? – Bergi

+0

您應該將所有鏈接的'href'設置爲'link3',因爲內部循環會覆蓋同一個'listItem'的'href'。 – Barmar

回答

0

也許最好多解釋一下你的問題。然而,我發現你的listItems將始終有href'link3',這是因爲在內部循環中,你改變鏈接3次並停在最後一個'link3'。

也許這是whay你想要做

listItems.forEach(function(item,index){ 
item.href = links[index % 3]; 
//modulus is used in case you have more than three items, otherwise it is not really needed but wont cause any trouble. 
}) 
+0

這樣做了。然而,我並不需要模量。 我把foreach放在for循環中。 – ardev

0

當您使用嵌套循環這樣的,你設置的hreflistItemlink。如果要將每個listItemhref設置爲相應的link,則應該只有一個循環,在這兩個集合中使用相同的索引。

for (var i = 0; i < listItems.length; i++) { 
    listItems[i].href = links[i]; 
}