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

問題は、関数がand (さらに重要なこと)onclickの現在の値を使用することです。したがって、本質的には、 の定義により存在しないを探しています。dataidata[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 に答える