Objektbaum des Formulars, Qualifizierung
Verfasst: 12.07.2012, 12:49
Hallo Experten,
auf folgende Frage habe ich leider noch keine Antwort gefunden:
Im LCD-Javascript muss ja ständig auf Teilformulare, Schaltflächen, Felder und auch auf Scriptobjekte des aktuellen Formulars referenziert werden.
Beispiel für ein Scriptobjekt, alle folgenden Varianten funktionieren zum Beispiel in einer event-Routine einer Schaltfläche:
xfa.form.myForm.variables.myScripts.script77();
form.myForm.variables.myScripts.script77();
myForm.variables.myScripts.script77();
variables.myScripts.script77();
myScripts.script77();
Nur das geht nicht:
script77();
Anderes Beispiel:
TuWas(Textfeld77.presence);
Das geht manchmal, wenn die Eventroutine sich "in der Nähe" von Textfeld77 befindet. Machmal ist jedoch die vollständige Qualifizierung nötig:
TuWas(xfa.form.myForm.myPage.mySubform.Textfeld77.presence);
Das wird z.B. nötig, wenn ich eine Routine als "Subroutine" aus einem Scriptobjekt aufrufe.
Natürlich will man immer so wenig wie möglich qualifizieren. Erstens um das grässliche Augenpulver zu begrenzen, zweitens um die Routinen universeller verwendbar zu machen.
Meine Frage jetzt: welche Regeln gibt es, wie genau ich qualifizieren muss, bzw. was ich alles weglassen darf? Und wenn was fehlt, an welcher Stelle des Baumes fängt er dann an zu suchen, und in welche Richtung?
Vielen Dank für Tipps
Raimund Gryszik, Berlin
auf folgende Frage habe ich leider noch keine Antwort gefunden:
Im LCD-Javascript muss ja ständig auf Teilformulare, Schaltflächen, Felder und auch auf Scriptobjekte des aktuellen Formulars referenziert werden.
Beispiel für ein Scriptobjekt, alle folgenden Varianten funktionieren zum Beispiel in einer event-Routine einer Schaltfläche:
xfa.form.myForm.variables.myScripts.script77();
form.myForm.variables.myScripts.script77();
myForm.variables.myScripts.script77();
variables.myScripts.script77();
myScripts.script77();
Nur das geht nicht:
script77();
Anderes Beispiel:
TuWas(Textfeld77.presence);
Das geht manchmal, wenn die Eventroutine sich "in der Nähe" von Textfeld77 befindet. Machmal ist jedoch die vollständige Qualifizierung nötig:
TuWas(xfa.form.myForm.myPage.mySubform.Textfeld77.presence);
Das wird z.B. nötig, wenn ich eine Routine als "Subroutine" aus einem Scriptobjekt aufrufe.
Natürlich will man immer so wenig wie möglich qualifizieren. Erstens um das grässliche Augenpulver zu begrenzen, zweitens um die Routinen universeller verwendbar zu machen.
Meine Frage jetzt: welche Regeln gibt es, wie genau ich qualifizieren muss, bzw. was ich alles weglassen darf? Und wenn was fehlt, an welcher Stelle des Baumes fängt er dann an zu suchen, und in welche Richtung?
Vielen Dank für Tipps
Raimund Gryszik, Berlin