2016-09-08 3 views
0

У меня есть ul элементов, которые отображаются на странице под формой.Javascript for-of loop over array и передать значения в for-of loop по ul

Я хочу, чтобы в каждом элементе была добавлена ​​ссылка на отправку формы. У меня есть массив ссылок, в которых я хочу иметь метод loop over array и loop over li, по существу setAttribute для каждого li, итеративно.

мой код Im работая с, чтобы наблюдать за представлением с помощью крючка действия (Ьс его на 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; 
     } 
    } 
})() 

до сих пор я могу только передайте в первой ссылке, Im не итерации по массиву, но я повторяю li.

+0

[Не использовать 'для перечислений на массивах] (http://stackoverflow.com/q/500504/1048572). Или не называйте 'for for' loops' for in'? – Bergi

+0

Похоже, вы действительно хотите 'listItems [i] .href = links [i]'? – Bergi

+0

Вы должны установить 'href' всех ссылок на' link3', так как внутренний цикл переписывает 'href' того же' listItem'. – 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

При использовании вложенных циклов, как это, вы устанавливаете href каждых listItem к каждому link. Если вы хотите установить href в соответствующий link, вы должны просто иметь один цикл, в котором вы используете тот же индекс для обеих коллекций.

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