Это небольшой кусок кода, но я не могу заставить его работать. У меня есть меню, которое заполняется динамически с помощью javascript, и я добавляю eventlistener на клик для каждой кнопки. Теперь каждая кнопка нуждается в другой функции, поэтому я прохожу через них
var list = $("a");
for (var i=0; i<list.length; i++) {
$(list[i]).on("click",function(){alert(i);});
}
С помощью этого кода каждая кнопка даст мне предупреждение с 5, вместо 1,2,3,... Как это исправить?
Используйте каждый() для чего:
var list = $("a");
list.each(function(index){
$(this).on("click", function(){alert(index);});
});
в вашем 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>
Значение я изменяется в цикле, но после завершения цикла значение я равно 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'));});
}
Но вы также можете сохранить информацию в массиве javascript.