Unbenannte und wiederholte Objekte referenzieren

In Designer können Sie sowohl unbenannte Objekte als auch mehrere gleichnamige Objekte erstellen. Ferner können Sie Berechnungen und Skripten erstellen, die mit Hilfe des Nummernzeichens (#) auf Eigenschaften und Werte unbenannter Objekte zugreifen bzw. diese ändern oder mit Hilfe der eckigen Klammer ([ ]) auf Vorkommenswerte von Objekten zugreifen. Das Nummernzeichen (#) und die eckige Klammer ([ ]) werden von FormCalc korrekt ausgewertet. JavaScript ist hierzu nicht in der Lage. Wenn Sie mit JavaScript auf den Wert eines Textfelds in einer Situation zugreifen möchten, in welcher das Nummernzeichen (#) oder die eckige Klammer ([ ]) auftritt, müssen Sie die Methode resolveNode mit einer vollständig qualifizierten oder einer abgekürzten Referenzsyntax kombinieren.

Wenn Sie beispielsweise ein neues leeres Formular erstellen, ist der Name des Teilformulars, welches die Seite des Formulars darstellt, standardmäßig ein unbenanntes Teilformular mit dem Vorkommenswert. 0. In der folgenden Abbildung sehen Sie die Formularhierarchie bei einem neuen Formular mit standardmäßiger Objektbenennung.

Das unbenannte Teilformular, welches die erste Seite des Formulars darstellt, hat die Vorkommensnummer 0. In dieser Situation greifen die beiden folgenden Referenz-Syntaxen auf den Wert des Textfelds zu, das in der Formularhierarchie über einem neuen Formular liegt und für das standardmäßige Namenskonventionen gelten:

    xfa.form.form1.#subform.TextField1.rawValue 
    xfa.form.form1.#subform[0].TextField1.rawValue
Hinweis: Wenn für ein Objekt kein Vorkommenswert angegeben wurde, greift die Referenz-Syntax standardmäßig auf das erste Vorkommen dieses Objekts zu.

FormCalc erkennt die oben angegebene vollständig qualifizierte Referenz-Syntax und wertet sie korrekt aus. Wenn Sie mit JavaScript auf denselben Wert zugreifen möchten, müssen Sie eine der folgenden Varianten der Skriptmethode resolveNode verwenden:

    xfa.resolveNode("xfa.form.form1.#subform.TextField1").rawValue; 
    xfa.resolveNode("xfa.form.form1.#subform[0].TextField1").rawValue;

Wenn Sie einem Formular eine neue Seite hinzufügen, ist das Teilformular, welches die neue Seite darstellt, standardmäßig unbenannt. Der Vorkommenswert des neuen Teilformulars wird allerdings auf 1 eingestellt. Sie können das neue unbenannte Teilformular mit einer ähnlichen Referenz-Syntax wie der obigen angeben:

    xfa.form.form1.#subform[1].TextField1.rawValue // FormCalc 
    xfa.resolveNode("xfa.form.form1.#subform[1].TextField1").rawValue; // JavaScript
Hinweis: Zu den im Skript-Editor verfügbaren Anweisungsende-Optionen gehören unbenannte Objekte am Anfang der Liste. Objekte mit mehreren Vorkommenswerten werden in der Liste nur einmal aufgeführt. Der Listeneintrag bezieht sich auf das erste Vorkommen des Objekts. Wenn Sie anstelle des ersten Vorkommenswerts einen anderen Vorkommenswert abrufen möchten, müssen Sie diesen Wert manuell der Referenz-Syntax hinzufügen.

Mit der Methode resolveNode können Sie Objekte innerhalb anderer Referenzsyntax-Anweisungen referenzieren. Dadurch kann der Skripterstellungsaufwand, der zum Referenzieren eines bestimmten Objekts, einer bestimmten Eigenschaft oder einer bestimmten Methode erforderlich ist, erheblich reduziert werden. Beispielsweise ließe sich die Referenz-Syntax, die auf ein Textfeld auf der zweiten Formularseite verweist, auf die folgende Anweisung kürzen:

    xfa.form.form1.resolveNode("#subform[1].TextField1").rawValue; // JavaScript

Weitere Informationen zur resolveNode-Methode finden Sie im Abschnitt resolveNode.