Referenser till namnlösa och upprepade objekt

Designer kan skapa både namnlösa objekt och flera objekt som har samma namn. Du kan trots detta skapa beräkningar och skript för att använda och modifiera egenskaper och värden för namnlösa objekt med hjälp av nummertecken (#), och objektförekomstvärden med hjälp av hakparenteser ([ ]). FormCalc tolkar nummertecken (#) och hakparenteser ([ ]) korrekt; däremot gör inte JavaScript detta. Om du vill använda ett textfältsvärde i JavaScript då nummertecken (#) eller hakparenteser ([ ]) förekommer måste du använda metoden resolveNode i kombination med antingen en fullständig referenssyntax eller en förkortad referenssyntax.

När du t ex skapar ett nytt, tomt formulär är namnet på delformuläret som representerar formulärets sida som standard ett namnlöst delformulär med förekomstvärdet 0. I följande bild visas formulärhierarkin för ett nytt formulär med objektstandardnamn.

Det namnlösa delformuläret som representerar formulärets förstasida har förekomstvärdet 0. Här använder båda de följande referenssyntaxerna textfältsvärdet i ovanstående formulärhierarki i ett nytt formulär som använder standardnamnreglerna:

    xfa.form.form1.#subform.TextField1.rawValue 
    xfa.form.form1.#subform[0].TextField1.rawValue
Obs! Om du inte specificerar något förekomstvärde för ett objekt används som standard den första förekomsten av objektet.

FormCalc hanterar den fullständiga referenssyntaxen ovan och tolkar den direkt. Med JavaScript måste du emellertid använda någon av följande former av skriptmetoden resolveNode :

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

Om du lägger till en ny sida i formuläret har delformuläret som representerar den nya sidan som standard inget namn; förekomstvärdet för det nya delformuläret är emellertid 1. Du kan specificera det nya, namnlösa delformuläret med hjälp av en liknande referenssyntax som den ovan:

    xfa.form.form1.#subform[1].TextField1.rawValue // FormCalc 
    xfa.resolveNode("xfa.form.form1.#subform[1].TextField1").rawValue; // JavaScript
Obs! Alternativen för komplettering av uttryck i skriptredigeraren inkluderar namnlösa objekt (i början av listan). Objekt som har flera förekomstvärden visas bara en gång i listan och representerar den första förekomsten av objektet. Om du vill använda ett annat förekomstvärde än den första förekomsten måste du lägga till förekomstvärdet manuellt i referenssyntaxen.

Du kan använda metoden resolveNode för att referera till objekt i andra referenssyntaxuttryck. På så sätt kan du reducera mängden kod för att referera till ett visst objekt eller en viss egenskap eller metod. Du kan t ex reducera referenssyntaxen som pekar på ett textfält på formulärets andra sida till följande uttryck:

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

Mer information om metoden resolveNode finns i resolveNode.