我有一个按钮数组,我想为每个按钮添加一个eventListener。
在eventListener中,我想检索当前正在按下的按钮的宽度值。我怎么能这样做?
for (i=0; i<5; i++) {
button[i].addEventListener(click, function(e) {
alert(/*How should I refer to THAT button*/)
})
}
答案 0 :(得分:5)
在事件监听器中,您可以使用this
来引用当前按钮:
for (var i=0; i<5; i++) {
button[i].addEventListener('click', function(e) {
alert( this ); // <-- This inside the event listener = current button
});
}
另一种方法是将循环的主体包装在一个闭包中,并创建一个局部变量:
for (var i=0; i<5; i++) {
(function(button) { // <--- Local variable
button.addEventListener('click', function(e) {
alert( button );
});
})(button[i]); // <-- Pass button
}
您可以在循环外创建一个命名函数,而不是在每个循环中构造一个新函数:
function createButtonEvent(button) {
button.addEventListener('click', function(e) {
alert( button );
});
}
for (var i=0; i<5; i++) {
createButtonEvent(button[i]);
}