1

こんにちは、記事と、Robert Nyman によるスコープとクロージャに関する優れた記事を読みました。しかし、私はこれを機能させることができません。mouseover イベントをさまざまなマーカーに割り当て、マウスオーバーしたマーカーに応じて iframe src を設定しようとしています。マウスオーバー イベントごとに悪名高い最後のエントリを取得します。私は数日間それで遊んでいますが、「思考流体」でさえ役に立っていません:)。任意のガイダンスをいただければ幸いです

for(var i=0; i

                        var latlngr = new google.maps.LatLng(mylatd,mylongd);
                        markerno = "marker_"+i;
                        markerarray[i] = new google.maps.Marker({
                                                                position: latlngr,
                                                                map: map,
                                                                title:myname
                                                                });
                             google.maps.event.addListener(markerarray[i], 'mouseover', function(markerno)
                              {return function()
                                {
                               mysrc = 'http://adds.aviationweather.gov/metars/index.php?submit=1&station_ids='+myicao+'&chk_metars=on&chk_tafs=on&std_trans=translated';
                               alert (mysrc);
                               $('#weather').attr({src: mysrc});
                              }(markerno)
                              });



                    }
4

2 に答える 2

1

ブロックを自己実行ラッパー関数でラップすることで、問題を解決できると思います。

for(var i = 0; i < someLength; i++) (function(i){
  // Your internal code here. i will be bound to it's value in the correct context
})(i);
于 2010-01-16T20:40:34.527 に答える
1

「思考液が機能しない」 - 朝の明晰な思考は機能します。自分のしていることをもう少し詳しく見て解決しました。閉鎖の問題があり、作成中の関数に正しい変数を渡していませんでした。これは機能しますが、アイデアに感謝します。

for(var i=0; i

                            var latlngr = new google.maps.LatLng(mylatd,mylongd);
                                            markerarray[i] = new google.maps.Marker({
                                                                    position: latlngr,
                                                                    map: map,
                                                                    title:myname
                                                                    });
                                 google.maps.event.addListener(markerarray[i],                  'mouseover', 
                                  function(myair)
                                  {return function()
                                  {
                                   mysrc = 'http://adds.aviationweather.gov/metars/index.php?submit=1&station_ids='+myair+'&chk_metars=on&chk_tafs=on&std_trans=translated';

                                   $('#weather').attr({src: mysrc});
                                  };}

                                  (myicao));
                       }
于 2010-01-16T21:05:25.640 に答える