这是一个非常基础的问题,但是...
我有一些像这样的代码:
当我点击'blah0'时,应该显示'0',点击'blah1'时应该显示'1'等。然而,默认情况下,无论我点击哪个'blah',它都会显示'10'。
我有一些像这样的代码:
var arr = Array('blah.jpg','ha.jpg');
for (var i=0; i<array.length; i++)
{
$('div#blah' + i).click(function() {
$('img').attr('src', arr[i]); });
}
当点击具有id="blah0"
的div时,应该将所有图像绑定到'blah.jpg'
。同样,点击具有id ="blah1"
的div应该将所有图像更改为'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'。