在與谷歌地圖V3標誌的工作,我一定要每個標記的名稱存儲在數組中,所以我可以很快地從地圖上立即將它們全部刪除。不過由於某種原因,當我調用我的函數時,應該遍歷整個數組,在刪除所有標記的過程中,函數僅在刪除一些標記後返回undefined。
函數之前的陣列(markersArray):
["markerZip02111", "markerZip02139", "markerZip01002", "markerZip94602", "markerZip02460"]
功能碼:
function removeAllMarkers(exceptId) {
$.each(markersArray, function(index, value) {
if(value != exceptId) {
eval(value+".setMap(null);");
markersArray.splice(value, 1);
console.log(value);
}
});
}
什麼控制檯顯示:
markerZip02111
markerZip01002
markerZip02460
undefined
功能之後的陣列運行:
["markerZip94602", "markerZip02460"]
顯然,直至碰到「未定義」值,然後將其停止陣列成功運行。我能做些什麼來解決這個問題?
你可以很容易地避免'的eval()'如果你在一個對象設置每個'markerZipxxxxx'項目,而不是讓他們的變量。如果它們是全局變量,那麼您可以執行'window [value] && window [value] .setMap(null);' – 2011-12-31 03:28:45
在遍歷數組時,「拼接」數組似乎不明智。你究竟想要完成什麼? – Domenic 2011-12-31 03:29:46
我不是我:他們是全局變量,我不確定你的意思是窗口[價值]。 – Colin 2011-12-31 04:11:33