当前位置:  开发笔记 > 编程语言 > 正文

如何在JavaScript匿名函数中的声明时使用变量的值?

如何解决《如何在JavaScript匿名函数中的声明时使用变量的值?》经验,为你挑选了1个好方法。

这是一个非常基本的问题,但......

我有一些像这样的代码

var arr = Array('blah.jpg','ha.jpg');
for (var i=0; i

这应该绑定div id="blah0"以将所有图像更改为'blah.jpg'单击时.同样,单击div id ="blah1"应将所有图像更改为'ha.jpg'.

但是,匿名函数将无法工作,因为它将在执行时使用'i'的值,即2.这意味着单击div将尝试将所有图像设置为arr [2] - 不存在元素(有趣的是不会在我的机器上抛出JS错误,但这是另一个故事......).

如何在声明时使用'i'的值创建匿名函数?

作为一个更简单的例子:

for (var i=0; i<10; i++)
{
    $('div#blah'+i).click(function() {
       alert(i)); });
}

当我点击'blah0'时,这应显示'0',当我点击'blah1'等时,应该显示'1'等.

但是,默认情况下,无论点击哪个'blah',它都会显示'10'.



1> Matthew Crum..:

在函数内声明一个新变量,该函数创建一个新的单击处理程序,该处理程序将i的当前值作为参数获取:

function makeClickHandler(arr, local_i) {
    return function() {
        $('img').attr('src', arr[local_i]);
    };
}

var arr = Array('blah.jpg','ha.jpg');
for (var i=0; i

函数的每个实例都有自己的local_i副本,每次都不会更改.

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有