0

我一直在尝试这样做

function test()
{
    $.getJSON("http://myurl.com",function (data){
        for( i=0; i<data.length; i++){
            test = createElement('img');
            test.onclick = function (){ myotherfun(data[i]); }
        }
    }
}

function myotherfun(data)
{
    alert(data);
}

错误消息指出data范围未涵盖。

有人可以解释为什么会这样吗?

4

1 回答 1

1

现在您已经编辑了您的问题,我可以看到问题 XD

问题是该onclick函数将使用dataand (更重要的是)的当前值i。所以本质上它正在寻找data[data.length],根据 的定义length不存在。

相反,您需要“锁定”迭代器的值。以下是您的操作方法:

for(i=0; i<data.length; i++) {
  (function(i) {
    // do stuff that relies on i
  })(i);
}
于 2013-01-29T17:42:52.693 回答