Quero exibir abas diferentes com base no item selecionado. Isso funcionava antes quando eu usava botões, mas quando mudei para menu suspenso, parou de funcionar.
HTML:
<option class="tab">
<select class="tablinks" onclick="openCity(event, 'AT3')" id="defaultOpen">Transatlantic 3</select>
<select class="tablinks" onclick="openCity(event, 'AT4')">Transatlantic 4</select>
<select class="tablinks" onclick="openCity(event, 'AL5')">Transatlantic 5</select>
</option>
<div id="AT3" class="tabcontent">
<img src="images/AT3 (via CoGH)_20250118.jpg" class="service-map">
</div>
<div id="AT4" class="tabcontent">
<img src="images/AT4 (via CoGH)_20250118.jpg" class="service-map">
</div>
<div id="AL5" class="tabcontent">
<img src="images/AL5 (via CoGH)_20250118.jpg" class="service-map">
</div>
JS:
function openCity(evt, cityName) {
var i, tabcontent, tablinks;
tabcontent = document.getElementsByClassName("tabcontent");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
}
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace(" active", "");
}
document.getElementById(cityName).style.display = "block";
evt.currentTarget.className += " active";
}
document.getElementById("defaultOpen").click();
option
s pertencem aselect
s, e não o contrário.Você também pode simplificar
openCity
bastante a função:Você não precisa de JavaScript para isso. Você pode usar :has() e o combinador Subsequent-sibling .