2016-09-08 33 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]; 
}