0
これはスコープと関係がありますが、私はいつもjavascriptスコープと闘うようです。とにかくここJavascriptカウンタがGoogleマップ関数に渡されない
は、マウスオーバーでコンソールの出力は常に3である
var beaches = [
['Surf Spot One', xxxxxx, xxxxxx, 2],
['Surf Spot Two', xxxxxx, xxxxxx, 1],
['Surf Spot Three', xxxxxx, xxxxxx, 3 ]
];
var marker = [];
for (var i = 0; i < beaches.length; i++) {
var pos = new google.maps.LatLng(beaches[i][1], beaches[i][2]);
marker[i] = new google.maps.Marker({
setClickable: 1,
position: pos,
map: map,
icon: surferDude,
title:beaches[i][0]
});
google.maps.event.addListener(marker[i], 'mouseover', function() {
// do something here on mouseover
console.log(i);
});
}
...コードのですか?どうしてこれなの?どのアイコンにマウスを重ねているかによって1または2または3になる必要があります。
ありがとうございます。私は本当にjavascriptの範囲と闘う。 – 32423hjh32423
@ neilc:クロージャーは慣れています。ループ内でクロージャーやコールバックを作成するときには、おそらく 'create_listener'のようなトリックが必要になることが一般的なルールです。あなたがそれを持っていないと主張している言語でさえ、ポインタから離れて決して得ることができない面白い方法:) –