У меня возникли проблемы с сбором информации о щелкнувших eventListeners.Петля и функции
У меня этот цикл, который строит массив:
myButtonList = document.getElementsByTagName('a');
myAnchorList = [];
for (i=0; i < myButtonList.length;i++) {
if (myButtonList[i].getAttribute('class') == 'flagged') {
myAnchorList.push(myButtonList[i]);
}
}
Для каждого <a>
введен в myAnchorList
массив, я также создать другой массив, хранящий другую информацию из того же тега (Класса и других atrributes).
Вот где я боюсь. Я пытаюсь настроить eventListener, чтобы отправить мне эту информацию при нажатии этих <a>
. Но почему-то тот факт, что я создаю функцию (для eventListener) внутри цикла, разбивает все.
for (i=0; i < myAnchorList.length; i++) {
myAnchorList[i].addEventListener("click", function(i){
console.log(alpha+' - '+beta[i]+" - "+charlie[i]);
});
}
Мои ценности будут либо undefined
или какие-то другие ценности, которые будут одинаковыми для каждой кнопки я щелкнул. alpha
работает хорошо, поскольку он не зависит от какой-либо итерации цикла, но не от других.
Может ли кто-нибудь увидеть, что я делаю неправильно здесь?
Попробуйте использовать 'myButtonList [I] .className' или' myButtonList [я] .classList.contains ("помеченный") ' –
Другая ошибка у вас есть здесь http://stackoverflow.com/questions/750486/javascript-замыкание-внутри-петли-простой-практический пример –
[1] (http://stackoverflow.com/questions/6968147/passing-parameters-on-event-listeners-with-loops), [2] (http://stackoverflow.com/questions/8909652/adding-click-event-listeners-in-loop) и другие –