[JavaScript] Probleempje met getElementByID

Pagina: 1
Acties:

  • VonAalscht
  • Registratie: November 2001
  • Laatst online: 07-05 13:46
Situatieschetsje:

Ik heb een PHP pagina die voor mij een hele rits met hidden input velden geeft op een formulier. Deze beginnen allemaal met inputCheck en dan een nummer. Nu wil ik via een loopje al deze waarden (stuk of 400) resetten, op "false" zetten.

code:
1
2
3
4
5
6
for (i = 1; i < 100; i++)
{
    var x = i+'';
    document.getElementById('inputCheck' +x).value = "false";
    check[i] = false;       
}

(die 100 is om even te testen).

Ik begrijp dat als ik die x een getal laat (dus x = i) dat het fout gaat, omdat x dan een getal is, terwijl het een string moet zijn. Daarom doe ik die x = i+'';

Bovenstaande loop werkt niet. Als ik kei hard:
code:
1
2
3
    var x = i+'';
naar
    var x = '1';

verander is er niets aan de hand, en werkt het goed. Heeft iemand een idee hoe ik misschien beter een string kan maken van die i ? |:(


De foutmelding is BTW:
code:
1
'document.getElementById(...)' is leeg of geen object

[ Voor 11% gewijzigd door VonAalscht op 03-06-2004 21:12 ]


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

drm

f0pc0dert

code:
1
2
3
4
5
<script type="text/javascript">
i = 169;
var id = "somestring" + i; 
alert ( typeof i );
</script>

behold ;) 't Ligt dus niet aan het wel of geen string zijn van de parameter van getElementById (), maar aan het wel of niet bestaan van die id.

Ik zou even op zoek gaan voor welke waarde van i het precies fout gaat.

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


  • VonAalscht
  • Registratie: November 2001
  • Laatst online: 07-05 13:46
potverdrie, het bleek een beetje fout te gaan in mijn modulo berekeningen waardoor elk 6e element niet weggeschreven werd |:(

bedankt voor de oplossing, heb inderdaad even gekeken bij welk element het fout ging (het 6e dus :X )

  • Johnny
  • Registratie: December 2001
  • Laatst online: 22-05 10:01

Johnny

ondergewaardeerde internetguru

Als je scripts van m'n website gebruikt mag je ook e-mailen, ik ben niet zo eng als m'n icon lijkt :>

Of je shrijft je javascript op dezelfde manier, in dat geval: great minds think alike.

[ Voor 29% gewijzigd door Johnny op 03-06-2004 22:38 ]

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


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 13:27
JavaScript:
1
2
3
4
5
6
7
8
//algemeen stukje over hoe je kunt controleren of het object wel bestaat:
for (var i = 1; i < 100; i++){
  if(typeof document.getElementById('inputCheck'+i)=='object'){
    //hij bestaat
    document.getElementById('inputCheck'+i).value = "false";
    check[i] = false;    
  }     
}

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

JavaScript:
1
2
3
4
5
6
7
8
//algemeen stukje over hoe je kunt controleren of het object wel bestaat:
var i = 100, el;
while (--i) {
  if ((el = document.getElementById('inputCheck'+i)) !== null) {
    el.value = 'false';
    check[i] = false;
  }
}


zou ook moeten werken ;)

Intentionally left blank


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 13:27
crisp schreef op 04 juni 2004 @ 14:09:
JavaScript:
1
2
3
4
5
6
7
var i = 100, el;
while (--i) {
  if ((el = document.getElementById('inputCheck'+i)) !== null) {
    el.value = 'false';
    check[i] = false;
  }
}

zou ook moeten werken ;)
Je bent goed hoor... E natuurlijk is de code van crisp weer enkele miliseconden sneller want je doet maar 1x de kostbare aanroep naar een element. Dat zegtie alleen niet :o

[ Voor 10% gewijzigd door djluc op 04-06-2004 14:26 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

het ging me eigenlijk voornamelijk om het feit dat getElementById null teruggeeft als een element niet bestaat, en je dus geen type-check hoeft te doen ;)

Intentionally left blank


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

drm

f0pc0dert

leve de typesafe comparison \o/

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


  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 13:27
drm schreef op 04 juni 2004 @ 15:04:
leve de typesafe comparison \o/
Wat is dat precies? [google="typesafe comparison" javascript] geeft namelijk niet echt veel resultaat.

Verwijderd

Voorbeeld:
1 == "1" zal true geven
1 === "1" zal false geven want de types zijn niet gelijk

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 13:27
Dat is me inderdaad wel bekend maar wist niet, net zoals google, dat dit deze naam heeft.

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

drm

f0pc0dert

Mja, da's ook niet echt een officiele naam ofzo. [google=strong typed comparison javascript] levert meer op :)

edit:
Er wordt ook bijzonder weinig melding van gemaakt in tutorials e.d., valt me op.

[ Voor 30% gewijzigd door drm op 04-06-2004 16:48 ]

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

Pagina: 1