Mr.Moe: JS-Function geht nur 1x

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

  1. 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

    --
    X-Self-Code: sh:( fo:) ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: Unusual
    X-Please-Search-Archive-First: Absolutely Yes
    1. 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
      
      1. 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

        1. 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

          1. 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

            1. 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