JS-Function geht nur 1x
Mr.Moe
- javascript
Morgen@all, ich habe das Problem dass, meine JS-Funktion nur einmal ausgeführt wird und beim 2ten mal einen Fehler auswirft.
var vorhanden=false;
azubiGrp="";
var teile=new Array();
elements=document.getElementById('meinDIV').getElementsByTagName('input');
for each (var element in elements)
{
if(element.name=='Bezeichnung') <-- Verweis auf diese Zeile(Fehler)
if(element.checked){}
else{
for each (var teil in teile)
if(teil==element.id)
vorhanden=true;
if(vorhanden==false)
{
if(azubiGrp=="")
azubiGrp="Azubi_ID="+element.id;
else
azubiGrp+=" OR Azubi_ID="+element.id;
}
vorhanden=false;
teile[teile.length]=element.id;
}
}
Beim ersten mal funktioneiert alles wunderbar, aber beim 2ten mal bekomme ich folgenden Fehler(oben gekennzeichned):
element ist undefined
hab ich was übersehen?
mfG Moe
Guten Morgen!
for each (var element in elements)
for each gibt es erst in JavaScript 1.6 und funktioniert daher nicht überall zuverlässig. Versuche lieber
for (var e in elements) {
var element = elements[e];
...
}
Wenn das nicht funktioniert, lass Dir element mal per alert (oder console.log) ausgeben.
Gruß, LX
Guten Morgen!
for each (var element in elements)
for each gibt es erst in JavaScript 1.6 und funktioniert daher nicht überall zuverlässig. Versuche lieber
for (var e in elements) {
var element = elements[e];
...
}
>
> Wenn das nicht funktioniert, lass Dir element mal per alert (oder console.log) ausgeben.
>
> Gruß, LX
Hallo und danke für die schnelle Antwort, ich habe diene Lösung ausprobiert und es ist alles gleich geblieben, das erste mal kann ich die Funktion problemlos aufrufen und sie macht was sie soll beim 2ten mal kommt der selbe Fehler(element is undefined).
Ich habe mir element mit Alert(element) ausgeben lassen und folgendes:
ein paar mal kommt [object HTMLInputElement] und die letzte Meldung 'undefined'.
PS: Ist das richtig wenn ich Alert(element) ausgebe und mehrere Meldungen bekomme ?
mfG Moe
Hallo,
das erste mal kann ich die Funktion problemlos aufrufen und sie macht was sie soll beim 2ten mal kommt der selbe Fehler(element is undefined).
Aus deinem Code wird kein Grund ersichtlich. Vielleicht liegt er woanders.
Ich habe mir element mit Alert(element) ausgeben lassen und folgendes:
ein paar mal kommt [object HTMLInputElement] und die letzte Meldung 'undefined'.
Dann prüfe mal, was in elements drinsteht. Und prüfe, was die einzelnen Funktionsaufrufe dieses Befehls zurückgeben:
elements = document.getElementById('meinDIV').getElementsByTagName('input');
PS: Ist das richtig wenn ich Alert(element) ausgebe und mehrere Meldungen bekomme ?
Ja, klar, weil die Anweisung in einer Schleife steht.
Mathias
Hallo,
das erste mal kann ich die Funktion problemlos aufrufen und sie macht was sie soll beim 2ten mal kommt der selbe Fehler(element is undefined).
Aus deinem Code wird kein Grund ersichtlich. Vielleicht liegt er woanders.
Ich habe mir element mit Alert(element) ausgeben lassen und folgendes:
ein paar mal kommt [object HTMLInputElement] und die letzte Meldung 'undefined'.
Dann prüfe mal, was in elements drinsteht. Und prüfe, was die einzelnen Funktionsaufrufe dieses Befehls zurückgeben:
elements = document.getElementById('meinDIV').getElementsByTagName('input');PS: Ist das richtig wenn ich Alert(element) ausgebe und mehrere Meldungen bekomme ?
Ja, klar, weil die Anweisung in einer Schleife steht.
Mathias
Hi, danke für die Hinweise, diese haben jedoch auch nicht geholfen,
ich habe alles mal ausgeben lassen,
document.getElementById('meinDIV')--->[object HTMLDivElement]
elements--->[object HTMLElementCollection]
ich weis leider nicht weiter :(
Gruß, Moe
Hallo,
elements--->[object HTMLElementCollection]
Da fällt mir auf, dass du eine Knotenliste nicht mit einer for-in-Schleife durchlaufen, sondern mit einer normalen for-Schleife.
for (var i = 0, element; element = elements[i]; i++) {
alert(element);
}
Mathias
Hallo,
elements--->[object HTMLElementCollection]
Da fällt mir auf, dass du eine Knotenliste nicht mit einer for-in-Schleife durchlaufen, sondern mit einer normalen for-Schleife.
for (var i = 0, element; element = elements[i]; i++) {
alert(element);
}
>
> Mathias
Dank, das ist es, klappt wunderbar !!!! :)
vielen Dank, Moe