Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[JavaScript] white space

Anne
3 antwoorden
  • 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
  • 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]
  • 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

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.