[javascript] DHTML object ophalen als array

Pagina: 1
Acties:

  • eborn
  • Registratie: April 2000
  • Laatst online: 20-08 15:45
Ik probeer op dit moment het volgende:

HTML:
1
2
3
4
<tr id="velden[10]"><td>...</td></tr>
<tr id="velden[24]"><td>...</td></tr>
<tr id="velden[9]"><td>...</td></tr>
<tr id="velden[30]"><td>...</td></tr>
Nu wil ik graag deze constructie als een array in JavaScript kunnen doorlopen. Zoals je ziet zijn de nummers niet opvolgend, dus een constructie als:

JavaScript:
1
2
for( i=0; i<10; i++ )
   object = document.getElementById('velden['+i+']');
werkt niet.

Een oplossing zou dus zijn om het volgende te gebruiken:

JavaScript:
1
2
for( ID in velden )
  ....


Maar ik weet dus niet hoe ik dat object als array kan aanroepen. Ik weet uberhaubt niet of het wel kan. Het lukt iig niet op de volgende manieren:

JavaScript:
1
2
3
4
var velden = document.forms['mijnform'].elements['velden'];
var velden = document.forms['mijnform'].elements['velden[]'];
var velden = document.getElementById('velden');
var velden = document.getElementById('velden[]');


Iemand nog suggesties?

offtopic:
wat is het toch verschrikkelijk onoverzichtelijk hoe die extra regels om de tags werken. De ene keer krijg je gapende gaten van 2 regels en de andere keer lukt het niet om normaal een extra witregel tussen te voegen...

[ Voor 138% gewijzigd door eborn op 08-07-2003 16:39 ]


Verwijderd

Check de docs, verder kan ik je niet helpen

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

crisp

Devver

Pixelated

Verwijderd schreef op 08 July 2003 @ 16:38:
Check de docs, verder kan ik je niet helpen
zeg dan niks...


misschien kan je nog wat met getElementsByTagName('TR'), die doorloopt volgens mij de DOM op volgorde van voorkomen.

Intentionally left blank


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Iets anders kan ik ook niet bedenken.. Doorloop ze op getElementsByTagname en filter de id-nummers tussen de blokhaken vandaan met een regex om ze zo in een array te zetten.

Maar zoals vaak: misschien is er wel een compleet andere simpelere oplossing mogelijk voor wat je wilt ;) Vertel eens wat je ermee van plan bent.

[ Voor 31% gewijzigd door Bosmonster op 08-07-2003 16:42 ]


  • eborn
  • Registratie: April 2000
  • Laatst online: 20-08 15:45
crisp schreef op 08 July 2003 @ 16:40:
misschien kan je nog wat met getElementsByTagName('TR'), die doorloopt volgens mij de DOM op volgorde van voorkomen.
Dat zou inderdaad kunnen. Dan moet ik alleen de id's pakken die beginnen met 'velden'. Op zich is dat nog wel een oplossing...

Een andere oplossing die ik al tegen was gekomen is om de TR's een onLoad event mee te geven. Hierin voeg je het ID (wat uit de database komt) aan een array. Iets als:

JavaScript:
1
2
3
4
5
<TR onLoad="RegisterRow(id);">...</TR>
function RegisterRow(id)
{
   array.push(id);
}

Dit gaat wel werken denk ik, maar het is toch weer een extra functie die elke keer aangeroepen moet worden :)

[ Voor 6% gewijzigd door eborn op 08-07-2003 16:43 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

helaas werkt een onload niet in andere elementen dan window/body :) Was het maar waar!

  • eborn
  • Registratie: April 2000
  • Laatst online: 20-08 15:45
Bosmonster schreef op 08 July 2003 @ 16:41:
Maar zoals vaak: misschien is er wel een compleet andere simpelere oplossing mogelijk voor wat je wilt ;) Vertel eens wat je ermee van plan bent.
Ik wil een bepaalde TR laten zien, afhankelijk van de keuze in een <select> tag. De values van de options bevatten deze getallen (landcodes).

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

crisp

Devver

Pixelated

dan kan je beter onload in 1x alle tr's registreren in een array. Zoals Bosmonster en jijzelf al aangeven: gewoon het id opvragen, en als het voldoet in de array stoppen :)

Intentionally left blank


  • eborn
  • Registratie: April 2000
  • Laatst online: 20-08 15:45
Bosmonster schreef op 08 July 2003 @ 16:44:
helaas werkt een onload niet in andere elementen dan window/body :) Was het maar waar!
Ah :) Ik heb het net van iemand anders gekregen, maar we hadden het beide nog niet getest ;)

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

crisp

Devver

Pixelated

Bosmonster schreef op 08 July 2003 @ 16:44:
helaas werkt een onload niet in andere elementen dan window/body :) Was het maar waar!
het werkt wel op elementen zoals img en iframe (die een src-property hebben) ;)

Intentionally left blank


  • eborn
  • Registratie: April 2000
  • Laatst online: 20-08 15:45
crisp schreef op 08 July 2003 @ 16:46:
dan kan je beter onload in 1x alle tr's registreren in een array. Zoals Bosmonster en jijzelf al aangeven: gewoon het id opvragen, en als het voldoet in de array stoppen :)
Jep, dan ga ik dat gewoon maar doen. Alles al direct vanuit php in een javascript array gooien. Op zich gaat het ook niet om heel veel nummers. Maar ik vond het netter om het 'on-the-fly' uit Javascript te halen. Als dat binnen afzienbare tijd te realiseren was uiteraard :P

Verwijderd

Je kan natuurlijk gewoon de table opzoeken (met een getElementById o.i.d) en dan met tableelement.rows de juiste rijen vinden. Zie ook http://www.w3.org/TR/2003...2-HTML-20030109/html.html

[ Voor 3% gewijzigd door Verwijderd op 08-07-2003 16:55 . Reden: [url] i.p.v. [href] ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

crisp schreef op 08 July 2003 @ 16:49:
[...]

het werkt wel op elementen zoals img en iframe (die een src-property hebben) ;)
img was ik vergeten ja.. iframe is gewoon een window :P

bij alles wat src heeft.. eens kijken of het bij een script-tag werkt :P

edit: nee dus ;)

[ Voor 4% gewijzigd door Bosmonster op 08-07-2003 17:02 ]


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

crisp

Devver

Pixelated

Bosmonster schreef op 08 juli 2003 @ 16:59:
[...]
bij alles wat src heeft.. eens kijken of het bij een script-tag werkt :P

edit: nee dus ;)
he jammer; zou zo handig zijn ;)

Intentionally left blank


  • eborn
  • Registratie: April 2000
  • Laatst online: 20-08 15:45
Nou, ik heb het toch maar via een van te voren gevuld array gedaan, en het werkt prima :)

Nu nog even een foutje van Mozilla wegwerken (of zou Mozilla het juist wel goed doen?)
Pagina: 1