Toon posts:

[JS] id-array aanspreken?

Pagina: 1
Acties:
  • 160 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Omdat ik me nu aan het aanwennen ben om in JS zoveel mogelijk met id's i.p.v. name's te werken, vroeg ik met af of het onderstaande voorbeeld ook mogelijk is met id's:

HTML:
1
2
3
4
5
<form name="frmTest">
     <input type="checkbox" name="chkTest" id="chkTest">
     <input type="checkbox" name="chkTest" id="chkTest">
     <input type="checkbox" name="chkTest" id="chkTest">
</form>

JavaScript:
1
2
3
alert(document.frmTest.chkTest[0].checked);
alert(document.frmTest.chkTest[1].checked);
alert(document.frmTest.chkTest[2].checked);


Ik had zelf als het onderstaande geprobeerd, maar dat werkte niet:

JavaScript:
1
2
3
alert(document.getElementById('chkTest')[0].checked);
alert(document.getElementById('chkTest')[1].checked);
alert(document.getElementById('chkTest')[2].checked);

Verwijderd

Een ID moet altijd uniek zijn en kun je dus niet meerdere keren voor een checkbox gebruiken. :)

  • Johnny
  • Registratie: December 2001
  • Laatst online: 26-05 10:04

Johnny

ondergewaardeerde internetguru

Geef iedere checkbox een uniek ID met opeenvolgende nummers:

HTML:
1
2
3
4
5
<form name="frmTest">
     <input type="checkbox" name="chkTest" id="chkTest1">
     <input type="checkbox" name="chkTest" id="chkTest2">
     <input type="checkbox" name="chkTest" id="chkTest3">
</form>


Dan maak je een while loop die blijft doorgaan totdat een checkbox met die ID niet meer bestaat:

JavaScript:
1
2
3
4
5
6
7
8
var i = 1;

while(checkbox = document.getElementById('chkTest' + i)) {

alert(checkbox.checked);

i++;
}

[ Voor 18% gewijzigd door Johnny op 14-04-2004 18:38 ]

Aan de inhoud van de bovenstaande tekst kunnen geen rechten worden ontleend, tenzij dit expliciet in dit bericht is verwoord.


Verwijderd

Een ID moet idd uniek zijn. Maar de name niet!
De method getElementsByName kun je mooi gebruiken:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<html>
<body>
<form name="frmTest">
     <input type="checkbox" name="chkTest" id="chkTest1">
     <input type="checkbox" name="chkTest" id="chkTest2" checked>
     <input type="checkbox" name="chkTest" id="chkTest3">
</form>
<script>
alert(document.getElementsByName("chkTest")[0].checked);
alert(document.getElementsByName("chkTest")[1].checked);
alert(document.getElementsByName("chkTest")[2].checked);
// of dit:
var obj = document.getElementsByName("chkTest");
for (cnt = 0; cnt < obj.length; cnt++) {
  alert(obj[cnt].checked);
}
</script>
</body>
</html>

edit:

Natuurlijk kan het ook via het forms object (aldus crisp):
alert(document.frmTest.chkTest[0].checked);
...maar dat wist je al, je wilde nu wel eens wat met id's gaan doen.

[ Voor 28% gewijzigd door Verwijderd op 15-04-2004 15:56 ]


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

crisp

Devver

Pixelated

waarom niet gewoon de elements collection van je form gebruiken? :?

Intentionally left blank


  • André
  • Registratie: Maart 2002
  • Laatst online: 26-05 00:33

André

Analytics dude

Ter verduidelijking ;)
JavaScript:
1
2
3
4
for (el in document.forms["frmTest"].elements)
{
  //bla
}

Verwijderd

crisp schreef op 15 april 2004 @ 12:47:
waarom niet gewoon de elements collection van je form gebruiken? :?
Ja, dat denk ik nu ook. Soms ga je moeilijker denken dan het is.

  • B-Man
  • Registratie: Februari 2000
  • Niet online
Je kan volgens mij ook als id "naam[]" gebruiken, en dan het element "naam" zelf als array aanspreken.

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 16:31

Pelle

🚴‍♂️

In PHP ja, niet in JavaScript.
Pagina: 1