Переменная остается неизменной после циклического перебора элементов.

0

Это небольшой кусок кода, но я не могу заставить его работать. У меня есть меню, которое заполняется динамически с помощью javascript, и я добавляю eventlistener на клик для каждой кнопки. Теперь каждая кнопка нуждается в другой функции, поэтому я прохожу через них

var list = $("a");
for (var i=0; i<list.length; i++) {
    $(list[i]).on("click",function(){alert(i);});
}

С помощью этого кода каждая кнопка даст мне предупреждение с 5, вместо 1,2,3,... Как это исправить?

Теги:

3 ответа

1
Лучший ответ

Используйте каждый() для чего:

var list = $("a");
list.each(function(index){
    $(this).on("click", function(){alert(index);});
});

DEMO

  • 0
    Большое спасибо! Это то, что я искал.
0

в вашем html-коде вызывается функция favbrowser всякий раз, когда элемент выбирается с помощью события onchange путем написания

<select id="myList" onchange="favBrowser()">
  <option></option>
</select>

а затем в javascript сделайте это, чтобы напечатать название пункта меню

<script>
function favBrowser()
{
var mylist=document.getElementById("myList");
alert(mylist.options[mylist.selectedIndex].text);
}
</script>
0

Значение я изменяется в цикле, но после завершения цикла значение я равно 5. Всякий раз, когда вы вызываете предупреждение, он ищет переменную i, значение которой теперь равно 5. Вам нужно сохранить значение приращения Я где-то за каждую вещь. В этом примере я даю каждой кнопке атрибут data-myvalue HTML5, называемый data-myvalue.

for (var i=0;i<ins.length;i++){
    ins[i].setAttribute('data-myvalue',i);
    ins[i].addEventListener('click',
           function(){alert(this.getAttribute('data-myvalue'));});
}

jsfiddle

Но вы также можете сохранить информацию в массиве javascript.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню