ja? en? als je er op wil wijzen dat ik "getElementsByTagName" had moeten gebruiken ... dan deed ik dat ook, alleen had ik het in mijn tekst verkeerd gezet, nu aangepast.
Ofwel die bestaat dus niet. getElementsByTagName() bestaat wel. Let hierbij op de S aan het einde van Elements. Dit geeft al aan dat er meerdere elementen gevonden kunnen worden en je dus een array terug mag verwachten. Je geeft aan dat je één of meerder optgroups wilt verbergen en dat gaat dus (bijna) niet met getElementsByTagName() omdat deze altijd ALLE groupopts zal geven.
Mogelijke oplossing zou kunnen liggen in id attribuut of beter nog in een data attribuut.
<optgroup data-id="1">Een groep</optgroup>
Nu zou je met getElementsByTagName() alle optgroups kunnen doorlopen en dan degene die het juiste data-id attribuut heeft kunnen verbergen. Aangezien dit een aantal stappen vereist lijkt het me handig om het geheel in een functie te zetten.
function hideOptGroupWithId(id) {
var groups = document.getElementsByTagName("optgroup");
for(var i = 0 ; i < groups.length ; i++) {
if(groups[i].getAttribute("data-id") == id) {
groups[i].style.display = "none";
return; // nothing to do anymore so exit this function
}
}
}
hideOptGroupWithId(1);
1. een id attribuut moet volgens de html specificaties altijd beginnen met een karakter letter waardoor het direct al minder geschikt is om een "database ID" of anders gezegd een numeriek id in op te slaan.
2. id attributen moeten in de gehele DOM uniek zijn. Dit is absoluut niet het geval bij data attributen.