GoogleマップV3マーカーを使用する場合は、各マーカーの名前を配列に保存してください。 。しかし、何らかの理由で、配列全体を繰り返し処理するはずの関数を呼び出すと、すべてのマーカーを長く取り除くと、マーカーの一部を削除しただけで関数は未定義に戻ります。関数の前
配列(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"]
「未定義」の値に達するまで配列が正常に実行されていて、それが停止することは明らかです。この問題を回避するにはどうすればよいですか?
。もしそれらがグローバルであれば、 'window [value]&window [value] .setMap(null);'を実行することができます。 –
それを反復処理している間は配列をスプライスするのは賢明ではないようです。あなたは正確に何を達成しようとしていますか? – Domenic
私はそうではありません:それらはグローバルであり、あなたはウィンドウ[値]によって何を意味するのかよくわかりません。 – Colin