在与谷歌地图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