[DOM] ID van een childelement achterhalen

Pagina: 1
Acties:

  • bakakaizoku
  • Registratie: Januari 2002
  • Laatst online: 00:20
Ik heb een divje:
HTML:
1
2
3
4
5
6
7
<div id="optie" class="opties" style="visibility: hidden; width: 0px; height: 0px;" onClick="//alert(this.id);">
    Kleur 1:<br>
    <input type="text" id="k1"><br>
    Kleur 2:<br>
    <input type="text" id="k2">
    <input type="button" onClick="verwijder(this.parentNode.id);" value="Verwijder">
</div>


Dit divje moet worden gekloond en worden verwijderd (wat al werkt), bij het klonen wordt de id van de div aangepast (gaat dus ook prima).

Het probleem waar ik nou mee zit is dat de id's van de 2 input type's ook moet worden aangepast, en dat lukt mij niet..

Anyone?

rm -rf ~/.signature


  • coubertin119
  • Registratie: Augustus 2002
  • Laatst online: 15-05 15:12
De .childNodes[] array aanspreken, en dan zo de id's van de inputs aanpassen.

offtopic:
Kleur 1: en Kleur 2: horen semantisch gezien in een <label> en die <br> hoort er ook niet, die moet vervangen worden door het gebruik van CSS. Just in case je je ene moer interesseert voor semantiek.

Skat! Skat! Skat!


  • bakakaizoku
  • Registratie: Januari 2002
  • Laatst online: 00:20
coubertin119 schreef op 25 juni 2004 @ 16:33:
De .childNodes[] array aanspreken, en dan zo de id's van de inputs aanpassen.

offtopic:
Kleur 1: en Kleur 2: horen semantisch gezien in een <label> en die <br> hoort er ook niet, die moet vervangen worden door het gebruik van CSS. Just in case je je ene moer interesseert voor semantiek.
Symantiek maakt mij in dit geval geen flikker uit, het gaat er om dat ik een werkend iets krijg wat later in een script moet worden geintregeerd :) De opmaak is dus momenteel niet van belang.

Maar, #define dat aanspreken van de array eens als het kan?

[ Voor 6% gewijzigd door bakakaizoku op 25-06-2004 16:35 ]

rm -rf ~/.signature


  • bakakaizoku
  • Registratie: Januari 2002
  • Laatst online: 00:20
Never mind, heb het al..

code:
1
2
3
4
5
    d = j.childNodes;
    //for (var i = 0; i < d.length; i++) {
    //  alert('i = '+i+'; ID = '+d[i].id);
    //}
    d[8].style.backgroundColor = '#000';


Waar 8 de aan te spreken child is.

rm -rf ~/.signature


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:46

crisp

Devver

Pixelated

mattttt schreef op 25 juni 2004 @ 16:48:
Never mind, heb het al..

code:
1
2
3
4
5
    d = j.childNodes;
    //for (var i = 0; i < d.length; i++) {
    //  alert('i = '+i+'; ID = '+d[i].id);
    //}
    d[8].style.backgroundColor = '#000';


Waar 8 de aan te spreken child is.
pas daar mee op; IE ziet whitespace tussen 2 tags vaak ook als childNode en andere browsers niet; wellicht kan je beter via j.getElementsByTagName('INPUT') je elementen benaderen.

Intentionally left blank


Verwijderd

crisp schreef op 25 juni 2004 @ 16:53:
[...]

pas daar mee op; IE ziet whitespace tussen 2 tags vaak ook als childNode en andere browsers niet; wellicht kan je beter via j.getElementsByTagName('INPUT') je elementen benaderen.
Het is toch zo dat Mozilla en aanverwanten whitespace (en ook enters) tussen tags zien als een childNode en IE juist niet? Teminste dat is mijn ervaring.

getElementsByTagName is idd een eenvoudigere manier als je de content tussen in de div later nog aanpast en de input childnode op een andere positie terecht komt.

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

coubertin119:
De .childNodes[] array aanspreken, en dan zo de id's van de inputs aanpassen.
childNodes is geen array, maar een NodeList. Zie de DOM specificaties @ w3.org.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • coubertin119
  • Registratie: Augustus 2002
  • Laatst online: 15-05 15:12
drm schreef op 25 juni 2004 @ 17:09:
[...]
childNodes is geen array, maar een NodeList. Zie de DOM specificaties @ w3.org.
offtopic:
Sorry, ik baseerde me op de testsuites van Quirksmode.org en daar stond dit:
An array with all child nodes of the node

Skat! Skat! Skat!


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:46

crisp

Devver

Pixelated

Verwijderd schreef op 25 juni 2004 @ 16:57:
[...]


Het is toch zo dat Mozilla en aanverwanten whitespace (en ook enters) tussen tags zien als een childNode en IE juist niet? Teminste dat is mijn ervaring.
Ik bedacht me later dat het idd ook wel eens andersom zou kunnen zijn - whatever, in beide gevallen kan het een probleem opleveren met een dergelijke constructie.
coubertin119 schreef op 25 juni 2004 @ 17:37:
[...]
offtopic:
Sorry, ik baseerde me op de testsuites van Quirksmode.org en daar stond dit:


[...]
noem het dan minstens een collection, een array is het geenszins. Tsja, PPK natuurlijk... :P ;)

[ Voor 3% gewijzigd door crisp op 25-06-2004 18:17 ]

Intentionally left blank


Verwijderd

als het mogelijkerwijs fout kan gaan met die tussenliggende textnodes (als er dus whitespaces in je code staan), kan je checken op de nodeType (3 = textnode, 1 = element)
(maar da's dus alleen nodig als je verschillende elementtypen ertussen hebt, anders kun je beter met getElementsByTagName gebruiken uiteraard)

[ Voor 30% gewijzigd door Verwijderd op 25-06-2004 19:34 ]

Pagina: 1