Hallo Franz,
so weit, so gut, und Du denkst richtig.
Uncaught TypeError: element.value is undefined
Das ist die Firefox-Meldung? Chrome meldet
Uncaught TypeError: Cannot read property 'replace' of undefined
Was auf's gleiche hinausläuft, weil replace ja auf das Ergebnis von element.value
angewendet wird.
Tatsächlich zeigt diese Fehlermeldung aber, dass Du zwei Problemstellen hast. Einmal beim Aufruf von getElementAsFloat, und einmal innerhalb von getElementAsFloat. Die Frage, warum element.value
zu undefined ausgewertet wird, braucht schon etwas Spürsinn.
Frage 1: Welcher Wert entsteht aus document.formular_n.Wert4n
, wenn es das Feld Wert4n nicht gibt?
Frage 2: Und welcher Wert entsteht dann aus document.formular_n.Wert4n || 0
?
Frage 3: Wenn der so entstehende Wert in getElementAsFloat
hineingegeben wird, was entsteht dann aus element.value
?
Frage 4: Ist das || 0
in Frage 2 eine gute Idee? (Tipp: Die Antwort lautet „Nein“)
Frage 5: Wie kannst Du in getElementAsFloat
mit der Situation umgehen, dass dass in element
das Ergebnis aus Frage 1 hereinkommt? (Tipp: if
)
Zum Beantworten solcher Fragen kann es helfen, sich Teilergebnisse anzuschauen. Im Firefox musst Du aber von https auf http zurückschalten (in der Adresszeile das s von https entfernen und ENTER drücken), sonst bekommst Du den Sourcecode im Ergebnisfenster nicht zu sehen. Du findest ihn dann im Zweig fiddle.jshell.net / 2bwLfxz5/show / (index).
Setze in der Debugger-Ansicht der Firefox-Entwicklertools einen Breakpoint auf die let summe_1 = ...
Zeile (Klick auf die Zeilennummer davor, es kommt ein roter Punkt blauer Pfeil (roter Punkt ist Chrome) - nochmal klicken entfernt ihn).
Tipp eine Ziffer in eins der Eingabefelder, und er sollte anhalten.
Schau Dir dann an, welche Werte die fraglichen Teilausdrücke von oben ergeben. Das geht entweder durch Eintippen der Teilausdrücke in die Konsole, oder mit der Maus. Halte die Maus einfach mal über Wert4n
in document.formular.Wert4n
. Bei komplexeren Ausdrücken geht das nicht mehr, du kannst aber den fraglichen Ausdruck mit der Maus markieren, rechte Maustaste drücken und "evaluieren in Konsole" nutzen.
Um element.value
zu untersuchen, muss er natürlich erstmal in die Funktion hineingelaufen sein. Einen Einzelschritt in eine Funktion hinein machst Du mit der F11-Taste. Mit der F8-Taste setzt Du den Programmablauf fort.
Rolf
sumpsi - posui - obstruxi