Ga naar inhoud

[JavaScript] white space


anoniem

Aanbevolen berichten

Na een aantal lussen gaat het fout bij het volgende stukje script:[code:1:6799fd1e5f] h2[i].onclick = function(){ sib = this.nextSibling; if(sib.style.display == "block"){ sib.style.display = "none" } else{ sib.style.display = "block" } }[/code:1:6799fd1e5f]Als ik met alert(sib); probeer uit te vinden wat het volgende elememnt is krijg ik terug dat het text betreft. Dit zou daarentegen gewoon een ander element moeten zijn. In Internet Explorer werkt alles naar verwachten, maar Mozilla lijkt de tussenliggende whitespace niet te waarderen. Als ik het namelijk op een element uittest waar geen whitespace omheen zit (dus de siblings zitten tegen elkaar aan) werkt het prima. Is er een manier om van tevoren die whitespace weg te halen of is er misschien een parameter die ervoor zorgt dat de eventuele whitespace wordt genegeerd? Anne
Link naar reactie
Je zou aan de hand van de nodeType eigenschap kunnen kijken of de nextSibling een textnode (nodeType = 3) of een element (nodeType = 1)is. Als de nextSibling een textnode is, ga je gewoon door naar de nextSibling van die textnode. Zo zou het moeten werken: [code:1:7ef3886b2f] h2[i].onclick = function(){ var sib = this.nextSibling; while(sib.nodeType == 3){ sib = sib.nextSibling; } if(sib.style.display == "none"){ sib.style.display = "block" } else{ sib.style.display = "none" } } [/code:1:7ef3886b2f]
Link naar reactie
Dat werkt perfect. Nu heb ik helaas een ander probleempje dat waarschijnlijk wel op te lossen op een soort zelfde manier.[code:1:d3f552d17f] h2.item(0).nextSibling.style.display = "none"; // about h2.item(1).nextSibling.style.display = "none"; // calendar h2.item(2).nextSibling.style.display = "block"; // sections h2.item(3).nextSibling.style.display = "block"; // chapters h2.item(4).nextSibling.style.display = "none"; // search h2.item(5).nextSibling.style.display = "none"; // meta[/code:1:d3f552d17f]Hier wordt dus niet geloopt maar gewoon direct aangesproken. Hier gaat dus (nu) nog het een en ander de mist in. Misschien een soort functie maken voor het aanroepen van nextSibling? Anne
Link naar reactie
Mooi opgelost, bedankt voor de inspiratie. Functie:[code:1:f059109b1d]function nextSib(number,noneblock){ if(!document.getElementsByTagName) return false; var h2 = document.getElementById('menu').getElementsByTagName("h2"); var sib = h2.item(number).nextSibling; while(sib.nodeType == 3){ sib = sib.nextSibling; } sib.style.display = noneblock; }[/code:1:f059109b1d]Aanroep:[code:1:f059109b1d] nextSib("0","none"); // about[/code:1:f059109b1d]Anne
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...