在我的 Google 地图应用程序中,我可以在地图上放置标记,并保留对放置的每个标记的引用,以及名为markers
.
添加标记很容易,我只是push()
将新创建的对象放到数组(markers.push(marker)
)上;
但是,当从数组中删除任意标记时,给定插槽的索引,它的行为并不像预期的那样。我的功能是:
function deleteMarker(markerIndex) {
if (markerIndex!='' && markerIndex>=0 && markerIndex<markers.length) {
if (confirm('Do you really want to remove this marker from the map?')) {
alert('deleting marker '+markerIndex); //debugging purposes
markers.splice (markerIndex, 1);
}
}
}
我以前没有使用 splice() 函数的经验,但看看它的描述 @ w3schools似乎很简单。但是,我得到以下行为:
markers.splice()
什么也没做。那么我做错了什么?
而且,当markerIndex
为 0 时,不显示确认框。起初,我假设冗长的 if 条件评估为 false,因此跳过了整个代码块,但是,使用 Firebug 逐步执行调用我发现当数组非空时,索引 0 的条件(当然)成立, 下一步显示if (confirm(...))
andalert('deleting...)
被跳过并被markers.splice()
调用(但没有任何反应)。这种行为太奇怪了,我决定打开这个问题。
谁能澄清发生了什么?
我认为删除标记将是人们可以做的最简单的功能。我可以添加它们,编辑它们的内容,甚至清除所有标记(pop()
从markers
数组中删除标记直到为空),一切都很好。