Javascript 关闭 - 鼠标事件

标签 javascript

我有这个代码:

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/

相关文章:

javascript - 表单提交后保留数据库查询结果

javascript - 为什么我的圆圈以一定 Angular 从直线表面弹起?

javascript - TypeError : jQuery(. ..).ready(...) 不是一个函数

javascript - 在AngularJS中绑定(bind)两个各自的$scope中的数据,如何?

javascript - 滑动面板动画

javascript - 在 Google Chrome 中将 '?' 编码为 '%3F' 时出错

javascript - 如何检测哪个元素在浏览器视口(viewport)中?

javascript - 打开图层不显示给定纬度、经度中的标签

javascript - Angular .js :14700 Error: [$controller:ctrlreg] The controller with the name 'MainCtrl' is not registered

javascript - 如何消除 HTML5 canvas mousepan 方法中的摆动效果?