chriscandy Skrevet 15. september 2007 Skrevet 15. september 2007 (endret) Jeg har problemer med denne "trekkspill" snutten i Firefox. Den fungerer fint i IE7, men i FF får jeg bare feilmelding "thisNode is not a function". Har prøvd meg frem en del uten hell. Dette er mitt første forsøk på JS så vi nåde... <script type="text/javascript"> function showOnly(catID) { var theCats = document.getElementById("theCategories"); for(var i = 0; i < theCats.childNodes.length; i++) { var thisNode = theCats.childNodes[i]; var titleDiv = thisNode.getElementsByTagName("DIV")[0]; var theParag = thisNode.getElementsByTagName("P")[0]; if(thisNode.id != "category" + catID) { theParag.style.display = "none"; } else { theParag.style.display = ""; } } } </script> Her er hvor jeg kaller på funksjonen. <body> <div id="theCategories"> <div id="category1"> <div class="titleBar" onclick="showOnly(1)"> Senior </div> <ul> <li><a href="#">Link1</a></li> <li><a href="#">Link2</a></li> <li><a href="#">Link3</a></li> <li><a href="#">Link4</a></li> </ul> </div> <div id="category2"> <div class="titleBar" onclick="showOnly(2)"> Junior </div> <ul> <li><a href="#">Link1</a></li> <li><a href="#">Link2</a></li> <li><a href="#">Link3</a></li> <li><a href="#">Link4</a></li> </ul> </div> <div id="category3"> <div class="titleBar" onclick="showOnly(3)"> Aldersbestemt </div> <ul> <li><a href="#">Link1</a></li> <li><a href="#">Link2</a></li> <li><a href="#">Link3</a></li> <li><a href="#">Link4</a></li> </ul> </div> </div> </body> Live demo Endret 16. september 2007 av chriscandy
luxus Skrevet 16. september 2007 Skrevet 16. september 2007 (endret) IE og FireFox er ikke helt enige i hva som skal ligge i childNodes arrayet, så i IE ligger (kanskje mest naturlig ved første øyekast) bare HTML elementene DIV, UL osv, mens i firefox så får du også med noder for hvert linjeskift du har i HTML fila di. Det betyr at childNodes gir: [Text-node element som inneholder "\n" (linjeskift), DIV elementet du vil ha ut, "\n" .. osv..] Du må derfor sjekke om elementet du henter ut er text node, eller element node. Les mer om nodetyper her. Koden blir da: [...] var theCats = document.getElementById("theCategories"); for(var i = 0; i < theCats.childNodes.length; i++) { // Sjekker nodetype, vi vil bare ha med element noder, som er type 1 // De andre hopper vi over if ( theCats.childNodes[i].nodeType !== 1 ) { continue; } var thisNode = theCats.childNodes[i]; var titleDiv = thisNode.getElementsByTagName("DIV")[0]; [...] Dette virker :-) Endret 16. september 2007 av luxus
chriscandy Skrevet 16. september 2007 Forfatter Skrevet 16. september 2007 Helt luxus Tester det ut ASAP. Takker...
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå