Eigene Funktion definieren, übergebenen Parameter verwenden

Fragen und Antworten rund um das Thema JavaScript im LiveCycleDesigner
KlausTöpfer
Beiträge: 7
Registriert: 28.01.2012, 09:41

Eigene Funktion definieren, übergebenen Parameter verwenden

Beitrag von KlausTöpfer » 29.07.2012, 22:06

Hallo zusammen,

ich habe ein Frage zur Definition eigener Funktionen mit übergebenen Parametern. Ich hätte den übergebenen Parameter gern zur Referenzierung verwendet. In meinem Formular kann ich leider nicht dden kompletten Pfad des Textfeldes an die Funktion liefern.

Als stark reduziertes Beispiel:

function test(feldname)
{
Formular1.Seite1.feldname.rawValue = 3;
}

Der aufruf erfolgt dann über

eig_func.test(Textfeld);

Ich hoffte, dass die FUnktion dann
Formular1.Seite1.Textfeld.rawValue=3

daraus macht - aber es funktioniert nicht, der übergebene Parameter wird leider nicht einfach in die Referenz "hineingeschrieben. Zum besseren Verständis ist mein reduziertes Beispiel mit hochgeladen.

Viele Grüße,
Klaus.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Eigene Funktion definieren, übergebenen Parameter verwenden

Beitrag von armine » 30.07.2012, 06:45

Hallo Klaus,

das geht mindestens auf zwei Wegen.

hg armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

KlausTöpfer
Beiträge: 7
Registriert: 28.01.2012, 09:41

Eigene Funktion definieren, übergebenen Parameter verwenden

Beitrag von KlausTöpfer » 30.07.2012, 09:12

Hallo armine,

vielen Dank für die Hilfe! Lösung 1 geht bei mir nicht, da in meinem eigentlich Fomular auch noch die presence-Eigenschaft geändert werden soll.

Lösung zwei kannte ich - die gesammte Referenz auf das Objekt mit zu übergeben. Problem ist aber, das diese Funktion bei mir nur wirklich sinnvoll ist, wenn ich nicht die gesammte Referenz übergebe.
Mein Formular, es ist ein Zeugnisformular, es gibt Halbjahres- und Endjahreszeugnisse und dazugehörige Notenübersichten. Und auf jedem gibt es beispielsweise eine PhyNote (Physik-Note). Die haben nur den Feldnamen gemein, die Referenzen sind sehr unterschiedlich. Und ich würde die Funktion gern auch für die CheNote, die BioNote usw. verwenden.

Ich suche nach einer Möglichkeit, den an die Funktion übergebenen Parameter in die Referenz einzubauen, nicht die ganze Referenz zu übergeben.

Viele Grüße,
Klaus.

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Eigene Funktion definieren, übergebenen Parameter verwenden

Beitrag von armine » 30.07.2012, 14:58

Hallo Klaus,

du kannst Werte sowohl vor der Übergabe als auch aus der Funktion heraus sammeln.

Ein Button schränkt aber mehr ein, als eine DDL. Vielleicht inspiriert dich mein Vorschlag zu einer Lösung.

hg armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

KlausTöpfer
Beiträge: 7
Registriert: 28.01.2012, 09:41

Eigene Funktion definieren, übergebenen Parameter verwenden

Beitrag von KlausTöpfer » 30.07.2012, 16:09

Hallo armine,

kannst du mir erklären, was in der Zeile

Zugang == "open" ? Weg.Hj_2.rawValue = Rückgabewert : Weg.Hj_1.rawValue = Rückgabewert ;


das Fragezeichen und der Doppelpunkt bewirken?


Und es bleibt dabei, das Referenzen entweder komplett in der Funktion festgelegt sind oder komplett übergeben werden, eine MIschung scheint nicht möglich zu sein...

Viele Grüße,
Klaus.

Benutzeravatar
nele_sonntag
Beiträge: 2742
Registriert: 04.05.2009, 15:12
Wohnort: Frankfurt
Kontaktdaten:

Eigene Funktion definieren, übergebenen Parameter verwenden

Beitrag von nele_sonntag » 30.07.2012, 16:43

Hallo Klaus,

diese Syntax-Schreibweise kommt (zumindest kenne ich sie daher) aus der Java Expression Language (JSP) und bildet mit Doppelpunkt und Fragezeichen wenn, dann..also was passiert im true bzw. false Fall ab. (siehe bei den Operatoren: http://www.jsptutorial.org/content/el)

Also in deinem Fall: Wenn der Zugang open ist, dann (?) weise Weg..2 den Rückgabewert zu, ansonsten (Doppelpunkt) und das ist der false-Fall, weise Weg..1 den Rückgabewert zu.

Könnte man auch so schreiben:

Code: Alles auswählen

if(Zugang == "open")
{
Weg.Hj_2.rawValue = Rückgabewert
}else{
Weg.Hj_1.rawValue = Rückgabewert
}
Ist einfach eine andere Schreibweise, die der eine oder andere bevorzugt.

LG Mandy

KlausTöpfer
Beiträge: 7
Registriert: 28.01.2012, 09:41

Eigene Funktion definieren, übergebenen Parameter verwenden

Beitrag von KlausTöpfer » 31.07.2012, 11:46

Vielen Dank! Die Kurzschreibweise ist sehr nett!

Viele Grüße,
Klaus.

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Eigene Funktion definieren, übergebenen Parameter verwenden

Beitrag von armine » 31.07.2012, 12:51

Hallo Klaus,

nachdem Mandy meinen Patzer entschuldigt hat, bleibt noch nachzutragen, dass man Übergabewerte durchaus mit Informationen, die sich die Funktion selbst ausliest, zusammenführen kann.

hg armine
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

KlausTöpfer
Beiträge: 7
Registriert: 28.01.2012, 09:41

Eigene Funktion definieren, übergebenen Parameter verwenden

Beitrag von KlausTöpfer » 31.07.2012, 14:11

Hallo armine,

ich finde die verkürzte Schreibweise hoch interessant!

Im letzten Beispiel wird die Zeilennummer als Parameter an die Funktion übergeben. Wäre es auch möglich, in diesem Befehl

xfa.resolveNode("Seite1.Table1.row[" + Zeile + "]").Hj_1.rawValue = Rückgabewert


beispielsweise table1 (falls es noch eine zweite Tabelle gäbe) oder auch HJ_1 als Parameter zu übergeben? Hier hatte ich Schwierigkeiten, wenn solche oder vergleichbare Teile der Referenzierung an die Funktion übergeben werden sollen. 

Ich habe ein umfangreicheres Beispiel übertragen

Die Funktion test bekommt hier einen Teil der Refernzierung übergeben - und das klappt nicht...

function test(FachNote){
            xfa.resolveNode("Formular1.Übersicht.Tabelle1.Zeile2.FachNote").rawValue = "---";
            xfa.resolveNode("Formular1.Zeugnis.Tabelle2.Zeile2.FachNote").rawValue = "---";
            }


Viele Grüße,
Klaus.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

armine
Beiträge: 2690
Registriert: 16.05.2009, 10:24

Eigene Funktion definieren, übergebenen Parameter verwenden

Beitrag von armine » 31.07.2012, 17:30

Hallo Klaus,

um zu einem Ergebnis zu kommen, würde ich gerne die grundlegende Problemstellung vestehen. Aufgrund der Datei mutmaße ich, dass auf einem Deckblatt die Zeugniserstellung abgearbeitet werden soll und so für jeden Beurteilten eine Instanz des Zeugnisses erstellt wird?
Wenn dem so ist, wo kommen die Daten her? Beim ersten Mal spielt das womöglich keine Rolle, aber wie geht es im 2. Halbjahr/Semester?

hg armine

Antworten