名称未設定オブジェクトと繰り返しオブジェクトの参照

Designer は、名称未設定オブジェクトおよび同じ名前を持つ複数のオブジェクトを作成する機能をサポートします。また、番号記号(#)表記および角括弧([ ])表記によるオブジェクトのオカレンス値を使用して、名称未設定オブジェクトのプロパティと値のアクセスおよび変更を行う演算とスクリプトを作成できます。FormCalc では、番号記号(#)文字と角括弧([ ])文字が正しく解釈されますが、JavaScript ではこれができません。JavaScript の使用中に番号記号(#)や角括弧([ ])が出現する場合、テキストフィールドの値にアクセスするには、完全修飾参照構文または短縮参照構文と共に resolveNode メソッドを使用する必要があります。

例えば、空白フォームを新しく作成する場合、デフォルトでは、フォームのページを表すサブフォームの名前は、オカレンス値が 0 の名称未設定サブフォームになります。次の図は、デフォルトのオブジェクト名称設定で作られた新規フォームのフォーム階層を示しています。

フォームの先頭ページを表す名称未設定のサブフォームには、オカレンス値 0 が設定されます。この場合、次の参照構文は共に、上述の新規フォーム(デフォルトの命名規則を使用)のフォーム階層にあるテキストフィールドの値にアクセスできます。

    xfa.form.form1.#subform.TextField1.rawValue 
    xfa.form.form1.#subform[0].TextField1.rawValue
注意: デフォルトでは、オブジェクトのオカレンス値を指定しない場合、参照構文はオブジェクトの最初のオカレンスにアクセスします。

FormCalc は上述の完全修飾参照構文を認識し、直接処理します。JavaScript を使用して同じ値にアクセスするには、以下の resolveNode スクリプティングメソッドの形式のうちいずれかを使用する必要があります。

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

例えば、フォームに新しいページを追加する場合、デフォルトでは、新しいページを表すサブフォームの名前が未設定となります。なお、新規サブフォームのオカレンス値は 1 に設定されます。上述と同様の参照構文を使用し、新しい名称未設定のサブフォームを指定できます。

    xfa.form.form1.#subform[1].TextField1.rawValue // FormCalc 
    xfa.resolveNode("xfa.form.form1.#subform[1].TextField1").rawValue; // JavaScript
注意: スクリプトエディターで使用できるステートメント完了オプションには、リストの先頭に名称未設定オブジェクトが表示されます。複数のオカレンス値を持つオブジェクトはリストに 1 回だけ表示されます。これはオブジェクトの最初のオカレンスです。最初のオカレンス以外のオカレンス値にアクセスする場合は、参照構文にオカレンス値を手動で追加する必要があります。

resolveNode メソッドを使用して、別の参照構文ステートメント内にあるオブジェクトを参照できます。この方法を使用すると、少ないスクリプトで特定のオブジェクト、プロパティまたはメソッドを参照できるようになります。例えば、フォームの 2 ページ目にあるテキストフィールドを指す参照構文を次のステートメントのように単純化できます。

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

resolveNode メソッドについて詳しくは、「resolveNode」を参照してください。