我有这个代码:
var as = document.getElementsByTagName('a');
for ( var i = as.length; i--; ) {
as[i].onclick = function(num) {
return function() {
console.log(num);
};
}(i);
}
按预期工作,但是当我添加 num
返回函数时,如下所示。它打印出 鼠标事件
。为什么?
var as = document.getElementsByTagName('a');
for ( var i = as.length; i--; ) {
as[i].onclick = function(num) {
return function(num) { //Adding num here causes issue
console.log(num);
};
}(i);
}
最佳答案
您正在向 onclick
事件返回一个函数。该函数是您的事件被触发时调用的函数。
当 JavaScript 调用您的事件函数时,它会将 Event
对象传递给它。
当您将 num
添加到您说 //Adding num here causes issue
的位置时,您正在创建一个新的本地 num
变量,该变量隐藏外层的(i
的值)。
as[i].onclick = function(num) {
return function(e){
console.log(e, num);
};
}(i);
关于Javascript 关闭 - 鼠标事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18898324/