[dHTML] ChildNodes verwijderen

Pagina: 1
Acties:

  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-05 09:56
Ik heb een soort tree gemaakt dmv van HTML met de volgende structuur:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<div>
  <img />
  <img />
  tekst
 <div>
    <img />
    <img />
    meer tekst
 </div>
 <div id="punt">
    <img />
    <img />
    nog meer tekst
    <div>
       <img />
       <img />
       nog wat meer tekst
    </div>
 </div>
</div>

Nu wil dat als je op de DIV met id PUNT klikt, de childNodes verwijderd worden (excl. de plaatjes en tekst die bij de div zelf hoort)

Dus wat ik geprobeerd heb is:
JavaScript:
1
2
3
4
5
function fnDeleteChilds(objEl)
{
    for (var int = 3; int < objEl.childNodes.length; int++)
       objEl.childNodes(int).removeNode(true);
}
maar tot mijn grote verbazing wil dat niet :? Ik heb ook al geprobeerd vanaf de lengte terug te lopen, zodat ik achteraan begon met het verwijderen van de childs maar dat wil ook niet.. vaag probleempje volgens mij en ik kom er echt niet meer uit....

[ Voor 10% gewijzigd door r0bert op 20-12-2002 12:35 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*

probeer het eens los met een specifiek element met een ID bijvoorbeeld, om te kijken hoe de browser uberhaupt omgaat met removeNode.. of had je dat al geprobeerd?

kleine opmerking: int is niet zo handig om te gebruiken als variabele naam... dit is in veel talen namelijk een gereserveerd keyword :) gewoon i, j, k, etc zijn gebruikelijk om te gebruiken in loopjes.

Verwijderd

Misschien heb je hier wat aan
HTML:
1
2
3
4
5
6
function del(){
DocBody = document.getElementById('punt')
childone = document.getElementsByTagName('div').item(3)

DocBody.removeChild(childone)
}

  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-05 09:56
Het zal denk ik niet zozeer aan de removeNode funtie liggen, want het werkt op zich wel, alleen als een element meerdere DIVs als child heeft, wordt er maar 1tje verwijderd en de ander blijft staan.

[edit]
Vervanging voor removeNode(true) geprobeerd
JavaScript:
4
objEl.removeChild(objEl.childNodes(int));

geen verbetering..

Eventjes online gezet:
http://62.131.154.4:2002/...nuTree/html/template.html

[ Voor 44% gewijzigd door r0bert op 15-06-2005 11:02 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 10-05 18:53

Bosmonster

*zucht*



En een IP-adres waar we wel bij kunnen? :)

[ Voor 39% gewijzigd door Bosmonster op 20-12-2002 14:18 ]


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 19-05 09:52

thomaske

» » » » » »

HTML:
1
2
3
4
5
6
7
8
function fnDeleteChilds(objEl)
{
    aantal = objEl.childNodes.length;
    for (var int = aantal; int > 0 ; int--){
        // remove_id = int-1; # weet niet zeker of deze erbij moet..
        objEl.childNodes(int).removeNode(true);
    }
}


ik denk namelijk dat tijdens het deleten de object tree wordt aangepast en alles een plaatsje opschuift. Wanneer je dus achteraan begint heb je daar geen last van.

[ Voor 26% gewijzigd door thomaske op 20-12-2002 14:27 ]

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-05 09:56
Bosmonster schreef op 20 December 2002 @ 14:18:

[...]


En een IP-adres waar we wel bij kunnen? :)
Sorry, mijn broertje sluit apache steeds af.. dus is niet beschikbaar en kan hem nou niet ergens naders online zetten .. binnen kort wel.. sorry

Verwijderd

Deed me denken aan deze weblogposting:
http://simon.incutio.com/...12/13/#clearingASelectBox
Maak jij niet toevallig dezelfde fout?

Verwijderd

ander vraagje ik kwam het volgende tegen misschien weet iemand hoe ik dat bouw dmv dreamweaver [plugin] http://www.brunningonline.net/simon/blog/ die calendar linking wel handig voor mijn digitaal dagboek, of is het ook in cgi [perl] formaat te krijgen?

Verwijderd

Ik ken heel de methode removeNode niet. Dat is volgens mij dus IE only. Als je gaat DOM scripten, wijk dan NOOIT af van de standaard, of je gaat jezelf weer ranzige dingen zitten aanleren. Gebruik gewoon de removeChild methode.

  • r0bert
  • Registratie: September 2001
  • Laatst online: 26-05 09:56
Vét .. het werkt gewoon :)
Ik had er inderdaad ook aan gedacht dat er steeds nodes tussenuit werden gehaald, maar had dat door middel van een smerige for-loop opgelost, wat dus niet bleek te werken!

werkende oplossing:
JavaScript:
1
2
while (objEl.childNodes.length > 3)
        objEl.removeChild(objEl.childNodes(3));


Mijn dank is groot :)
Pagina: 1