次のコードがあります。何らかの理由で、私が実行したくないcase文(Case '2'の2番目)が正しいもの(Case '4')に加えて実行されています。オンラインで読むと、ほとんどのpplは「break」文を追加することで同様の問題を解決することができました。しかし、それは私のために働いていません。以下advise.Outputは私のブラウザJavaScriptでswitch文が正しく機能しない
var chk = '4'
switch (chk) {
case '4':
var locations = [
["936001_STURGEON_BAY_MEYER", 44.8358, -87.3305, "LRA", 1],
["936087_SHADOW_LAKE", 45.2183, -88.5981, "LRA", 2],
["936136_PIG", 44.5925, -88.0808, "OMS", 3],
["936136_PIG", 44.5925, -88.0808, "OMS", 4]
];
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 15,
center: new google.maps.LatLng(locations[0][1], locations[0][2]),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow({
maxWidth: 400000
});
var locations_all_cells1 = locations;
var marker, i;
for (i = 0; i < locations_all_cells1.length; i++) {
var type1 = locations_all_cells1[i][3];
switch (type1) {
case "OMS":
marker1 = new google.maps.Marker({
position: new google.maps.LatLng(locations_all_cells1[i][1], locations_all_cells1[i][2]),
map: map,
icon: 'http://maps.google.com/mapfiles/ms/icons/green-dot.png'
});
google.maps.event.addListener(marker1, 'click', (function(marker1, i) {
return function() {
infowindow.setContent(locations_all_cells1[i][0]);
infowindow.open(map, marker1);
}
})(marker1, i));
break;
case "LRA":
marker2 = new google.maps.Marker({
position: new google.maps.LatLng(locations_all_cells1[i][1], locations_all_cells1[i][2]),
map: map,
icon: 'http://maps.google.com/mapfiles/ms/icons/red-dot.png'
});
google.maps.event.addListener(marker2, 'click', (function(marker2, i) {
return function() {
infowindow.setContent(locations_all_cells1[i][0]);
infowindow.open(map, marker2);
}
})(marker2, i));
break;
case "UPSAVE":
marker3 = new google.maps.Marker({
position: new google.maps.LatLng(locations_all_cells1[i][1], locations_all_cells1[i][2]),
map: map,
icon: 'http://maps.google.com/mapfiles/ms/icons/yellow-dot.png'
});
google.maps.event.addListener(marker3, 'click', (function(marker3, i) {
return function() {
infowindow.setContent(locations_all_cells1[i][0]);
infowindow.open(map, marker3);
}
})(marker3, i));
}
}
break;
case '2':
var locations = [
["936001_STURGEON_BAY_MEYER", 44.8358, -87.3305, "LRA", 1],
["936087_SHADOW_LAKE", 45.2183, -88.5981, "LRA", 2],
["936136_PIG", 44.5925, -88.0808, "OMS", 3],
["936136_PIG", 44.5925, -88.0808, "OMS", 4]
];
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 15,
center: new google.maps.LatLng(locations[0][1], locations[0][2]),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow({
maxWidth: 400000
});
var locations_all_cells = ;
var marker, i;
for (i = 0; i < locations_all_cells.length; i++) {
var type1 = locations_all_cells[i][3];
}
break;
default:
text = "Looking forward to the Weekend";
}
console.log(text);
エラー情報
あなたは 'type1'を定義していません!そして、私は間違いなく確信しています。これはケース2には行かないでしょう...もしそうなら、 'chk = '4';'を文字列として作ってください。 –
上記のコードでは、デフォルトのブランチだけが実行されます(どちらのケースも '4'と一致しないため、 '2'も '4'もありません)。 '4!== '4''に注意してください。 – Paulpro
@Paulpro 'switch'は厳密なチェックをしますか? –