我把谷歌地圖標記插入陣列,並一切正常,當我做手工:JavaScript數組遍歷manualy作品,而是通過循環不
var m =[];
m[0] = new google.maps.Marker(.....
google.maps.event.addListener(m[0], 'click', function()
{
alert('Markerklik');
$("#trasa").append(m[0].getPosition().toString()+"<br>");
});
m[1] = new google.maps.Marker(.....
google.maps.event.addListener(m[1], 'click', function()
{
alert('Markerklik');
$("#trasa").append(m[1].getPosition().toString()+"<br>");
});
但是,如果我想用循環爲:
for (var i=0 ; i<2; i++)
{
// do the same with m[i]
}
即時得到米[I]點擊標記時未定義(M [I] .getPosition())。
任何建議如何自動執行循環?
請注意,如果我把標記放入變量temp中,將偵聽器添加到temp並執行m.push(temp);在循環中 - 點擊任何標記給我最後添加標記的位置。
這看起來像添加事件到M [I]甚至不檢查我的價值,這不是找米[1]例如,而是要像變量「評爲」米[I]
如果我用m [0]和m [1]做所有的代碼 - 萬能工作正常,有事件連接到m [0]和m [1],但創建帶有for [m]看起來像結合事件不至m [0]和一個環M [1],但添加事件後 「M [I]」,當i是剛剛信我,i的
不是一個值確定,看起來像來自一個響應的代碼SE工作:
for (var i=0 ; i<2; i++)
{
(function(x) {
m[x] = new google.maps.Marker({
position: getRandomPoint(),
title: 'Mojmarkers'
});
google.maps.event.addListener(m[x], 'click', function() {
alert('Markerklik');
$("#trasa").append(m[x].getPosition().toString()+"<br>");
});
return m[x];
})(i);
}
任何人都可以解釋爲什麼這不尋常的解決方案工作,因爲我想要的嗎?
使用了... ...在在回答 – 2010-09-16 11:36:57