变量不会传递给函数

时间:2017-10-10 16:15:49

标签: javascript jquery

我目前有代码执行此操作:

$('#BoxShadow_1').click(function()
{
addDivBoxShadow('BoxShadow_1');
});

$('#BoxShadow_2').click(function()
{
addDivBoxShadow('BoxShadow_2');
});

...等10个相似的元素。它工作得很好。

我也在使用JQuery。

我想将代码更改为:

for (i = 1; i < 11; i++) {

    $('#BoxShadow_' + i).click(function(){
      addDivBoxShadow("BoxShadow_" + i);
    });

}

挑战是:

BoxShadow_10被分配给所有div而不是BoxShadow_1,BoxShadow_2等。

仅供参考我试图实现的代码是我在此URL上写的数学游戏:

tinyurl.com/sashamath

提前致谢。我希望将来做出贡献。

好的,这就是答案,使用&#39; let&#39;声明如下:

for (let i = 1; i < 11; i++) {

    $('#BoxShadow_' + i).click(function(){
      addDivBoxShadow("BoxShadow_" + i);
    });

}

1 个答案:

答案 0 :(得分:2)

循环问题是经典的“循环回调”问题。 “

但是你根本不需要循环。只需使用id的{​​{1}}属性即可获取ID。

this

或者,如果您更改function handler() { addDivBoxShadow(this.id); } $('#BoxShadow_1').click(handler); $('#BoxShadow_2').click(handler); 函数以使用addDivBoxShadow来获取元素,则可以直接传递它。

this

所以现在$('#BoxShadow_1').click(addDivBoxShadow); $('#BoxShadow_2').click(addDivBoxShadow); 可以使用addDivBoxShadow来引用绑定元素,它也会接收this个对象作为参数。

当然,也可以使用单个选择器完成。

event