login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[JS] Loop door array, childNodes verwijderen

Offline Codestar - 03/09/2008 09:19 (laatste wijziging 03/09/2008 09:24)
Avatar van CodestarNieuw lid Ik heb een formulier. Vanuit dat formulier haal ik de <span> tag's op aan de hand van de className. Vervolgens verwijder ik vanuit de parentNode van het span element, het span element... tenminste dat is de bedoeling. In de praktijk verwijdert hij alleen de 1ste en de 3e (en niet de 2e en de 4de span!).

Hoe KAN dit? Ik ben al een paar uur bezig met het aanpassen van de code, maar ik snap niet wat er mis gaat. Het lijkt wel of de for loop zich vreemd gedraagt!

  1. var elements = new Array();
  2. elements = $(container.id).getElementsByClassName(tag);
  3.  
  4. if (elements.length > 0)
  5. {
  6. for (var i = 0; i < elements.length; i++)
  7. {
  8. var parent = (elements[i].parentNode);
  9. parent.removeChild(elements[i]);
  10. }
  11. }


//Update!
Hij doet het om en om. De 1ste span wel, de 2e niet. De 3e wel, de 4e niet.  

5 antwoorden

Gesponsorde links
Offline Ontani - 03/09/2008 09:27
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
wordt uw array niet kleiner doorheen de lus.

bijvoorbeeld:

parent[0] = element1;
parent[1] = element2;
parent[2] = element3;
parent[3] = element4;

Na het verwijderen van childNode 0 wordt je array dit:

parent[0] = element2;
parent[1] = element3;
parent[2] = element4;

Na het verwijderen van childNode 1 wordt je array dit:

parent[0] = element2;
parent[1] = element4;
Offline Codestar - 03/09/2008 09:29
Avatar van Codestar Nieuw lid Ja, dat gebeurt idd! Ik heb geprobeerd om de counter binnen de for loop op 0 te houden, maar dat gaf ook niet het gewenste resultaat.

Hoe zou je wel door deze for loop heen moeten gaan?
Offline Ontani - 03/09/2008 09:34
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Normaal kan je in het begin een count doen van alle elementen ( Nog voor je for loop).

En dan van 0 tot die count -1 kan je removeChild(elements[0]) doen.
Offline Codestar - 03/09/2008 09:39 (laatste wijziging 03/09/2008 10:07)
Avatar van Codestar Nieuw lid Zo bedoel je?
  1. for (var i = 0; i < elements.length-1; i++)
  2. {
  3. var parent = (elements[0].parentNode);
  4. parent.removeChild(elements[0]);
  5. }


De eerste 3 span worden verwijderd, de rest niet...
(http://codestars.nl/cscms/contact ~ klik maar op bericht verzenden)
Offline marten - 03/09/2008 10:07
Avatar van marten Beheerder Code tags gebruiken in het vervolg Codestar. Ik heb het nu even aangepast voor je.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.199s