Enrico: TypeError: ButtonAbsenden.className is undefined

Beitrag lesen

Hallo,

ich möchte grafische Buttons in Abhängigkeit der Ergebnisse bereits erfolgter Validierungen verfügbar machen bzw. nicht verfügbar machen, so dass ein dynamisch erzeugtes Formular erst dann abgesendet werden kann, wenn alle Validierungen erfolgreich verlaufen sind.

Dabei unterscheide ich, ob die Buttons innerhalb oder außerhalb der einzelnen Formularabschnitten angezeigt werden.

Darüber hinaus kann das dynamisch erzeugte Formular bis zu drei Buttons haben, wobei der Button mit der höchsten ID immer der "Absende"-Button ist.

Alle Button bestehen immer aus einer linken, mittleren und rechten Grafik.

Mein Problem ist nun, diese ID zu ermitteln, anhand derer sich die Indizes für die weiteren Grafiken des Buttons ergeben.

Das ist mein aktueller Ansatz:

  
function Absendebutton_steuern ()  
{  
   var j = Object.keys(Fehler).length,  
       ButtonAbsenden;  
  
   if (j === 0)  
   {  
      document.getElementById("Fehlermeldung").innerHTML = "";  
  
      var Suffix = 3;  
  
      do  
      {  
         Suffix -= 1;  
  
         if (Suffix == 0)  
            Suffix = "";  
      }  
      while (ButtonAbsenden = document.getElementById("ButtonMitte" + Suffix) === false);  
  
      var Darstellung = ButtonAbsenden.className.replace(/[^\d]/g, "");  
  
      [...] weiterer Code [...]  
   }  
   else  
   {  
      [...] weiterer Code [...]  
   }  
}  

Ich bekomme für die Zeile "var Darstellung = ..." die Fehlermeldung "TypeError: ButtonAbsenden.className is undefined".

"className" habe ich richtig geschrieben, daran dürfte es nicht liegen.

Bei meinem Testformular wird mir nach der do-while-Schleife bei der Variablen "Suffix" der Wert 2 ausgegeben, was auch tatsächlich der ID des Absendebuttons entspricht.

Dies bedeutet für mich, dass die Schleife beim Durchlauf   ButtonAbsenden = document.getElementById("ButtonMitte" + 2)   erfolgreich war und die Variable "ButtonAbsenden" auch definiert wurde/sein müsste.

Zudem wird die Funktion "Absendebutton_steuern ()" nach dem onblur-Ereignis im Textfeld von der Validierungsfunktion aufgerufen, d.h. das Formular ist zu diesem Zeitpunkt vollständig aufgebaut.

Warum erhalte ich dann bei der Folgeanweisung "var Darstellung = ..." diese Fehlermeldung?

Danke und Gruß,
Enrico