为什么i
在此代码中的callback function
之外?当应用事件侦听器时,超出范围的变量
// All menu items collection
var menuItems = document.getElementsByClassName('menu-item');
// Loop trough all menu items and attach
// event listeners.
for (var i = 0; i < menuItems.length; i++) {
// Check if element truely exsists
if (menuItems[i]) {
menuItems[i].addEventListener('click', function(e){
////////////////////////////////
// NOTE: i, is out of scope! //
//////////////////////////////
var icon = menuItems[i].children[1],
submenu = menuItems[i].children[2];
// Change icon color
if (icon.style.background !== "blue") {
icon.style.background = "blue";
} else {
icon.style.background = "red";
}
// Show/hide submenu
if (submenu.style.display !== "block") {
submenu.style.display = "block";
} else {
submenu.style.display = "none";
}
});
}
}
仅当设置了事件侦听器时触发事件才定义它? –
这是一个答案的问题吗? – Johnny