Lieber Romero,
ich verstehe nicht, warum Du innerhalb von Button_push() weitere Funktionen "einfach so" definierst. Diese werden als anonyme Funktionsobjekte akzeptiert... aber nicht ausgeführt!
Dein Code noch stärker verkürzt:
function Button_push()
{
Schleife_Auslesung( Tabellenblatt_Anzahl, jj )
/* hier wird eine Schleife definiert, innerhalb derer genau eine Anweisung
- ausgeführt wird: Die Funktionsdeklaration von Weiter_Auslesung().
- Ein Anweisungsblock mit geschweiften Klammern fehlt hier, weshalb diese
- Funktionsdeklaration das einzige Element innerhalb der Schleife ist.
*/function Weiter_Auslesung( Tabellenblatt_Anzahl, jj ) {
// [...]
};function Schleife_Auslesung( Tabellenblatt_Anzahl, jj ) {
// [...]
};
};
>
> Meine Fragen an Dich:
>
> 1.) Warum willst Du Funktionsobjekte innerhalb einer Schleife immer wieder neu definieren? Warum sollen sie auch gleich noch "globale Variablen" (lies: Methoden des window-Objektes) sein? Anstatt "function foo () {}" kannst Du ja auch folgendes notieren: "window.foo = function () {};"...
>
> 2.) Wo genau wird "Schleife\_Auslesung()" definiert, und wo wird es ausgeführt? Analog dazu auch "Weiter\_Auslesung"?
>
> Solltest Du mit der zugrunde liegenden Objektorientierung von JavaScript noch kämpfen, dann empfehle ich Dir meinen Artikel ab dem Kapitel "[objektorientierter Ansatz](http://wiki.selfhtml.org/wiki/JavaScript/Fader-Framework/objektorientierter_Ansatz)".
>
> Liebe Grüße,
>
> Felix Riesterer.
Hy Felix,
um das Oben kurz zu erklären.
Mit der function Button\_push() werden meine Eingabedaten "übernommen", geprüft und da weitere Abfragen gestartet. Und die andren function's sind einfach "nur" Stopper, wo das Script warten muss, bis der User eine weitere Eingabe gemacht hat.
Aber darum ging es ja gar nicht. Die Frage war, warum ich ein "undefined" erhalte, wenn ich unterschiedliche Radio-Buttons habe.
Ich habe nun herausgefunden, dass ich, bevor ich das Alles erstelle, 24 Formular-Elemente in meinem Script bis dato habe.
Nun kommt aber folgende Anweisung hinzu:
`document.getElementById( "STL_Meldungen_Fehler" ).innerHTML = '<font color="darkred" id="TAKSY_Auslesedaten_Eingabetext"></font><br><font color="darkred" id="TAKSY_Auslesedaten_Eingabetext_Radiobuttons"></font><input type="button" id="TAKSY_Auslesedaten_Weiter" value="Weiter" style="width:80px" class="STL_Meldungen_Button"><input type="button" id="TAKSY_Schleife_Weiter" value="Weiter" style="width:80px" class="STL_Meldungen_Button"><input type="button" id="TAKSY_Auslesedaten_Bestätigung" value="Bestätigen" style="width:80px" class="STL_Meldungen_Button"> (Keine Markierung = keine Auslesung)';`{:.language-javascript}
Eine Zeile mit 3 Buttons sowie 2 "Text-Einfüge-Elemente" (font's mit ID's). Hier dann sozusagen 5 weitere Formular-Elemente.
Und bei den 2 Text-Einfüge-Elemente, füge ich nun unterschiedlichen Text ein:
`document.getElementById( "TAKSY_Auslesedaten_Eingabetext" ).innerHTML = 'Text';`{:.language-javascript}
Je nachdem was ich brauche. Bei einem der Text-Einfüge-Element füge ich nun eine gewisse Anzahl an Radio-Buttons ein:
`document.getElementById( "TAKSY_Auslesedaten_Eingabetext_Radiobuttons" ).innerHTML = '<input type="radio" name="TAKSY_Auslesedaten_Eingabetext_Radiobuttons_Auswahl" value="' + x[0] + y[0] + '">' + x[0] + y[0] + ' <input type="radio" name="TAKSY_Auslesedaten_Eingabetext_Radiobuttons_Auswahl" value="' + x[0] + y[0] + "_" + HTZ[0].split("-")[1].substr(3,2) + '">' + x[0] + y[0] + "_" + HTZ[0].split("-")[1].substr(3,2) + ' ';`{:.language-javascript}
Nun möchte ich gern, dass aus einem Radiobutton nur noch einer wird oder anders gesagt, ich überschreibe die "alte" ID mit neuen Radiobuttons:
`document.getElementById( "TAKSY_Auslesedaten_Eingabetext_Radiobuttons" ).innerHTML = '<input type="radio" name="TAKSY_Auslesedaten_Eingabetext_Radiobuttons_Auswahl" value="' + x[jj] + y[jj] + '">' + x[jj] + y[jj] + ' ';`{:.language-javascript}
Wenn ich mir dann wiederrum die Anzahl und auch den Namen dieser Formular-Elemente anzeigen lasse, steht da der richtige Name sowie (anhand nur noch einem Radio-Button) anhand der vorherigen Anzahl ein Element weniger da.
Aber wenn ich mir nun die Länge dieses Element Radio-Button ausgeben möchte, wo er nun (s.o.) nur noch 1 Button hat, so müsste er mir doch Länge = 1 ausgeben. Das tut er nicht sondern gibt mir "undefined" aus.
Aber ich liste mir ihn doch auf, diesen Namen. Sehe ihn ja aber mittels `document.Auswahl.TAKSY_Auslesedaten_Eingabetext_Radiobuttons_Auswahl.length`{:.language-javascript} kann ich diesen 1 Namen nicht ansprechen.
Erstelle ich aber im nachhinein 2 neue Buttons, dann bringt er mir Länge = 2. Sind es sogar mehr als beim 1. mal erstellen der Radiobuttons, klappt das auch. Nur bei weniger als die vorher angegebenen.
Und da weiß ich echt nicht wo das Problem liegt.
LG Romero