2010-06-04 109 views
0

我想在一個循環內定義變量。我會在這裏放下代碼,然後試着解釋一些:如何在javascript中的for循環中定義變量?

for (var k=0; k<nodes.length; k++){ 
    this[node+k] = new google.maps.Marker({ 
     position: new google.maps.LatLng(array1[k], array2[k]), 
     map: map, 
     title: node[k], 
     icon: "some image file" 
    }); 
} 

我想創建的將被命名變量列表唱已定義的數組(名稱的數組被稱爲節點上面的代碼)。所以在這個循環中,我想定義一個新變量「this [node + k]」來創建一個新的google.maps.marker變量。

其目的是爲我想寫的一些管理軟件在一個自定義Google地圖上製作一堆帶有彈出窗口的標記。

我確定必須有一些方法來做到這一點,因爲我看到了其他代碼來定義循環中的變量(當然,我不能再找到...... :()。但是,變量的名稱是定義在循環中並沒有從另一個數組中取出(因爲我的是)

我不想創建var1,var2,var3,我看到了如何做到這一點。 array。

我很抱歉,如果問題仍然不清楚,但感謝您的幫助到目前爲止,我有一種感覺,它可能是谷歌地圖代碼混淆的情況太多,所以這裏是最初的方式來定義谷歌地圖標記變量:

var NAME1= new google.maps.Marker({ 
    position: new google.maps.LatLng(29.70600, -95.28159), // coordinates 
    map: map, 
    title:"NAME1", // marker title 
    icon: "http://127.0.0.1/public_html/tower.gif" // icon 
}); 

我現在的代碼只是重複此代碼20+次來定義所有不同的變量。我想嘗試把這一切都放到for循環中,並使用數組中的名稱定義變量。

+0

你能解釋這更好的?我不知道你真的想達到什麼。即。什麼不適合你當前的代碼? – brad 2010-06-09 19:41:36

+0

你想動態創建X個變量?不可能。 – 2010-06-10 17:38:35

+0

http://groups.google.com/group/google-maps-js-api-v3/browse_thread/thread/30b3f94096ae3e6b/7952f688abc30c69?lnk=raot&fwc=1&pli=1 我想我會將此鏈接添加到任何人感興趣,這解釋瞭如何在循環內創建許多這樣的地圖標記,其中包含存儲在不同數組中的latlong座標,名稱等所有信息。 – Oarcinae 2010-06-16 20:10:35

回答

0

你可以做你的描述,如果你的外部創建一個變量循環,然後把你的新作品了進去。類似這樣的:

var maps = []; 
for (var k=0; k<nodes.length; k++){ 
    maps[k] = new google.maps.Marker({ 
     position: new google.maps.LatLng(array1[k], array2[k]), 
     map: map, 
     title: node[k], 
     icon: "some image file" 
    }); 
} 

這使用地圖數組上的數字鍵來跟蹤項目。您可以將地圖製作爲對象,並使用文本鍵(如果這對您的場景更好)。

+0

你搖滾!非常感謝!將200行代碼壓縮到大約10或20,感覺很好... – Oarcinae 2010-06-16 19:29:55

4

在你for loop你應該使用分號,而不是逗號:

for (var k=0; k<nodes.length; k++){ 
    // ... 
} 
+0

這個錯字在這個問題上已經修正了很久。 – 2015-03-29 17:41:45

1

我不知道你正在嘗試做的,但你可以嘗試:

var names = ["name1", "name2"]; 
var markers = new Array(); 
for (var k=0; k<names.length; k++){ 
    markers[k] = new google.maps.Marker({ 
     position: new google.maps.LatLng(array1[k], array2[k]), 
     map: map, 
     title: names[k], 
     icon: "some image file" 
    }); 
} 
+0

我相信這個答案基本上和下面的答案一樣,但是我不能檢查這兩個都是對的:)但是感謝幫助的人們! – Oarcinae 2010-06-16 19:30:56