javascript - 函数引用而不是函数体 - 在循环中(带参数)

标签 javascript

我想替换这个:

for( var i=0; i<elementArray.length; i++ )
   elementArray[i].click(function(){
      console.log("element clicked - selectedElementIndex = " + i);                    
   });

用类似的东西:

for( var i=0; i<elementArray.length; i++ )
    elementArray[i].click( onElementClick(i) );

function onElementClick( i ){
   console.log("element clicked - selectedElementIndex = " + i ); 
}

我该怎么做? :)

最佳答案

因为(据我所知)点击处理程序不能接受参数,所以您需要创建一个函数,其中包含作用域中的变量,它应该看起来像这样:

for( ... ) {
    elementArray[i].click( onElementClick(i) );
    ...
}

function onElementClick( id ){
   return function() {
       console.log("element clicked - selectedElementIndex = " + id ); 
   }
}

关于javascript - 函数引用而不是函数体 - 在循环中(带参数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13504157/

相关文章:

JavaScript RegExp 匹配(部分)小时

javascript - jQuery 过滤器有时会显示所有元素

javascript - 如何在 Vuetify(版本 >= 2.0)中单击时突出显示 v-data-table 中的行?

javascript - 如何动态添加 Javascript 函数(并调用)

javascript - 如何在不编写这么多代码的情况下为多个 jQuery 操作创建一个函数?

javascript - AngularJS 中的嵌套 ng-switch

javascript - 如何使网格内的 div 延伸到网格之外?

javascript - 在 ES 6/Harmony 中拆分类定义

c# - JavaScript 调用页面方法 : error 500. JSON

javascript - 使用 Cucumber 测试 Highcharts(JS 图表库)