[JavaScript] Anweisung(en) kapseln

winfo_cologne
Hallo zusammen!

Habe ein Formular mit verschiedenen input fields. Bei manchen dieser inputs habe ich den event-handler "onKeyup" gesetzt und mit (vielen) Anweisungen bestückt. Das sieht sehr unübersichtlich aus, beispielsweise so:

code:
1:
2:
3:
4:
5:
<form>
<input ... onKeyup="this.form.sB.value = (this.form.stundeB.value*60*60) + (this.form.minuteB.value*60) + (this.form.sekundeB.value*1), this.form.sERGEBNIS.value = this.form.sA.value - this.form.sB.value, this.form.stundeERGEBNIS.value = h_errechnen(this.form.sERGEBNIS.value), this.form.minuteERGEBNIS.value = m_errechnen(this.form.sERGEBNIS.value), this.form.sekundeERGEBNIS.value = s_errechnen(this.form.sERGEBNIS.value)" ... />
</form>


Ich dachte mir, es wäre eine gute Idee, die Anweisungen zu "onKeyup" in eine Funktion zu kapseln:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
function refresh();
{
this.form.sB.value = (this.form.stundeB.value*60*60) + (this.form.minuteB.value*60) + (this.form.sekundeB.value*1),
this.form.sERGEBNIS.value = this.form.sA.value - this.form.sB.value,
this.form.stundeERGEBNIS.value = h_errechnen(this.form.sERGEBNIS.value),
this.form.minuteERGEBNIS.value = m_errechnen(this.form.sERGEBNIS.value),
this.form.sekundeERGEBNIS.value = s_errechnen(this.form.sERGEBNIS.value)
}


Denn dann muss ich ja im Formular nur noch folgendes schreiben:

code:
1:
2:
3:
4:
5:
<form>
<input ... onKeyup="refresh(this.value)" ... />
</form>


Aber das klappt nicht. Habe schon viel ausprobiert und umgestellt. WO könnte der Fehler liegen?

Wie nennt man überhaupt eine solche Anweisung wie "this.form.sekundeERGEBNIS.value" im JS-Slang?

Für jede Hilfe bin ich dankbar!
p-Logic
Ich kenn mich nicht so mit Java Script aus, aber müsstest du this nicht noch als Argument an die Funktion übergeben?

Also:
code:
1:
2:
3:
4:
5:
6:
7:
function refresh(obj);
{
obj.form.sB.value = (this.form.stundeB.value*60*60) + (this.form.minuteB.value*60) + 
[...]
}

statt:
code:
1:
2:
3:
4:
5:
6:
7:
function refresh();
{
this.form.sB.value = (this.form.stundeB.value*60*60) + (this.form.minuteB.value*60) + 
[...]
}
tkshorty
als erstes mal hinter function refresh() kein semikolon setzen. dafür aber ans ende jeder weiteren zeile mit befehl. und di kommas ham da auch nix zu suchen.

der funktion musst du garnix übergeben, also einfach refresh()

aber das hier kann auch net funktionieren:

Zitat:

this.form.stundeERGEBNIS.value = h_errechnen(this.form.sERGEBNIS.value),
this.form.minuteERGEBNIS.value = m_errechnen(this.form.sERGEBNIS.value),
this.form.sekundeERGEBNIS.value = s_errechnen(this.form.sERGEBNIS.value)


du rufst hier eine funktion in der funktion auf. das geht nur wenn du sie in der funktion definiert hast.