Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [Opgelost][Javascript]Array met DOM-referenties doorlopen  (gelezen 1277 keer)

Offline Joshua822

  • Lid
[Opgelost][Javascript]Array met DOM-referenties doorlopen
« Gepost op: 2011/12/17, 20:11:32 »
Hallo allemaal!

Nog een vraagje voor school waar ik mee vastzit is het verwijderen van DOM-elementen in iteratie met for ... in. Dit is voor het verwijderen van de inhoud van een <p>-element waar dynamisch in wordt geschreven. Hier zijn mijn functiedefinities:

de_paragraaf = 0;
de_paragraaf_tekst_nodes = new Array();
de_nieuwe_paragraaf = 0;
   
function verwijder_paragraaf()
{
   var te_verwijderen_paragraaf;
   for ( te_verwijderen_paragraaf in de_paragraaf_tekst_nodes )
   {
       de_paragraaf.removeChild ( te_verwijderen_paragraaf );
   }
}
   
function voeg_paragraaf_toe()
{
   var toe_te_voegen_aan_nodes;
   de_nieuwe_paragraaf = document.createTextNode("Dit is overbodige tekst!<br/>");
   toe_te_voegen_aan_nodes = de_paragraaf.appendChild(de_nieuwe_paragraaf);
   de_paragraaf_tekst_nodes.push ( toe_te_voegen_aan_nodes );
}   

En dan hebben we in het body-element nog een stuk script dat de globale variabelen voorziet van een goede startwaarde:
de_paragraaf = document.getElementById("overbodig");
de_paragraaf_tekst_nodes[0] = de_paragraaf.childNodes[0];

Weet iemand wat er mis is in de functie verwijder_paragraaf?

Hulp hiermee zou heel erg worden geapprecieerd!

Alvast heel erg bedankt,
Joshua.
« Laatst bewerkt op: 2011/12/18, 16:37:05 door Joshua822 »

Re: [Javascript]Array met DOM-referenties doorlopen
« Reactie #1 Gepost op: 2011/12/18, 10:20:27 »
Heb je geen debuginformatie? Misschien dat je de code eens door Firebug (http://getfirebug.com/) kan halen. Wat ik me kan voorstellen is dat removeChild niet werkt als de_paragraaf geen Node-object is. Als deze bijvoorbeeld de waarde 0 behoudt en je roept dan die functie aan gaat het mis lijkt me.

Als ik het goed begrijp krijgt het hier de waarde toegewezen: de_paragraaf = document.getElementById("overbodig") Zonder de rest van de code (en de documentHTML) kan ik niet goed zien of dat wel op de juiste plaats gebeurt. Wanneer roep je verwijder_paragraaf aan?

Misschien ook nog nuttig: https://developer.mozilla.org/en/DOM/NodeList#Example
« Laatst bewerkt op: 2011/12/18, 11:14:02 door erik1984 »

Re: [Javascript]Array met DOM-referenties doorlopen
« Reactie #2 Gepost op: 2011/12/18, 11:28:09 »
Heb zelf ook even wat geprutst. Zelf gebruik ik graag alert statements om te kijken wat er eigenlijk binnenkomt bij een functie, of wat de waarde van een bepaald object is.

<html>
<head>
<script>
function verwijderEen(n){
alert(n)
teverwijderen = document.getElementById("overbodig1")
alert(teverwijderen)
n.removeChild(teverwijderen)
}
function verwijderAllemaal(e){
l = e.childNodes
for (var i = 0; i < l.length; ++i) { 
var item = l[i]
if(item.nodeName == 'P'){
alert(item.nodeName + ": " + item.textContent)
e.removeChild(item)
}

}
</script>
</head>
<body>
<div id="lijst">
<p id="overbodig1">Tekst</p>
<p id="overbodig2">Tekst</p>
</div>
<br>
<input type="button" value="Haal 1 weg" onClick="verwijderEen(document.getElementById('lijst'))"><br>
<input type="button" value="Verwijderen" onClick="verwijderAllemaal(document.getElementById('lijst'))"><br>
</body>
</html>
« Laatst bewerkt op: 2011/12/18, 11:29:46 door erik1984 »

Offline Joshua822

  • Lid
Re: [Javascript]Array met DOM-referenties doorlopen
« Reactie #3 Gepost op: 2011/12/18, 16:36:44 »
Hartelijk dank voor de hulp, Eric. Maar het probleem was veel simpeler, ik gebruikte het for ... in statement foutief. Bij elke iteratie wordt de index van het volgende element in te_verwijderen geladen. Ik moest dus gewoon dat als index in de childNodes-array gebruiken, en klaar is kees!

Toch zeer hartelijk bedankt,
Joshua.