2014-02-11 52 views
1

我的問題應該相當簡單。如何將字符串轉換爲對象引用或將數字值添加到對象引用名稱?

如果有助於解釋,我目前正在使用一個名爲Leaflet的JavaScript庫。這個庫允許我創建一個定製的在線地圖,我可以添加標記到,這是我做的就在這裏:

var iconId = null; 

for (var i=1;i<4;i++) 
{ 
    iconId = "mapMarker" + i; // L.marker does not accept this because it is a string and not an object 
    var marker = L.marker([boulder.latitude, boulder.longitude], {icon: iconId}).addTo(map); 
} 

在另一個JS文件,我已經建立3名mapMarker對象以符合單張文檔屬性。

var mapMarker1 = L.icon({ 
    iconUrl: 'img/mapMarker1.png' 
}); 
var mapMarker2 = L.icon({ 
    iconUrl: 'img/mapMarker1.png' 
}); 
var mapMarker3 = L.icon({ 
    iconUrl: 'img/mapMarker1.png' 
}); 

正如你所看到的,我現在有一個創建帶有我想通過進入圖標參數的對象的名稱的字符串的循環,但圖標參數期待的對象,而不是字符串。有沒有一種方法可以動態創建對象名稱並將它們放在「iconId」中?我不想把它放入開關盒中,因爲它對我的口味來說太大了。

謝謝!

+0

可能重複[如何動態生成的JavaScript變量?] (http://stackoverflow.com/q/18153999/),[如何「生成」唯一變量?](http://stackoverflow.com/q/15894755/),[如何在Javascript中創建動態變量?] (http://stackoverflow.com/q/21198725/) – outis

+0

... [Javascript動態變量名稱](http:// stackoverf low.com/q/5117127/),[如何通過名稱查找JavaScript變量](http://stackoverflow.com/q/724857/) – outis

回答

1

每當您發現自己創建了一系列名稱相似且名稱遞增的變量時,您應該改用專門用於此目的的JavaScript特性:數組。

創建地圖標記的陣列,而不是編號的變量:

var mapMarkers = [ 
    L.icon({ 
     iconUrl: 'img/mapMarker1.png' 
    }), 
    L.icon({ 
     iconUrl: 'img/mapMarker1.png' 
    }), 
    L.icon({ 
     iconUrl: 'img/mapMarker1.png' 
    }) 
]; 

現在只需通過數組迭代:

for(var i = 0; i < mapMarkers.length; i++) { 
    var marker = L.marker(
     [ boulder.latitude, boulder.longitude ], 
     { icon: mapMarkers[i] } 
    ).addTo(map); 
} 
+0

優秀的邁克!你能解釋一下如何使用for循環來創建mapMarkers數組嗎?我一直在嘗試,但我對語法有點困惑。 – Omegalen

相關問題