Problem mit getElementsByTagName
AnonymousXXS
- javascript
0 wahsaga0 AnonymousXXS0 rfb
Hallo Community!
Ich habe ien Problem mit einer for-Schliefe und getElementsByTagName(). Und zwar möchte ich alle Elemente zu einer ajax-abfrage umformen.. das ganze mache ich so:
this.postString = '';
for(i=0;i<=document.getElementsByTagName('input').length;i++){
this.input = document.getElementsByTagName('input');
this.name = this.input[i].name;
this.value = this.input[i].value;
if(i==0){
this.postString += this.input[0].name + '=' + escape(this.input[0].value);
}else{
this.postString += '&' + this.name+ '=' + escape(this.value);
}
Leider kommt immer die Fehlermeldung:
Fehler: this.input[i] has no properties
Quelldatei: http://localhost/gbook/templates/1/js_functions.js
Zeile: 94
Ich hoffe auf hilfe!
Gruß, AnonymousXXS
hi,
for(i=0;i<=document.getElementsByTagName('input').length;i++){
this.input = document.getElementsByTagName('input');
Warum ermittelst du das hier bei jedem Schleifendurchlauf erneut?
Einmal davor reicht.
Und auch in der Abbruchbedingung den Wert jedes mal neu zu ermitteln, ist unperformant.
Leider kommt immer die Fehlermeldung:
Fehler: this.input[i] has no properties
Javascript zählt bei Null beginnend.
Wenn ein Array mit nullbasiertem, fortlaufendem Index, oder eine NodeList wie in diesem Fall, also x Einträge/Elemente hat - dann haben die Indices von 0 bis x-1.
Deine Schleife läuft nur leider von 0 bis x, weil du in der Abbruchbedingung <= length verwendet hast.
gruß,
wahsaga
Hallo wahsaga!
Lag tatsächlich an dem <= ;-) Flüchtigekitsfehler, manchmal ist man echt blind.. Das ich "this.input = document.getElementsByTagName('input');" besser vor der SCHleife hätte notieren sollen ist richtig, nur verstehe ich net ganz, was du für eine Abbruchbedingung meinst
Moin
was du für eine Abbruchbedingung meinst
die der for-Schleife, auch darin rufst du jedesmal getElementsByTagName auf. this.length täts doch auch.
Gruß
rfb