Hier ist eine Herausforderung. Ich bin relativ neu im Scripting, habe aber eine Idee, dass ich arbeiten möchte.Extendscript: Dynamische Dropdown-Listen und OnChange-Funktionen für sie erstellen
Ich habe ein Skript, das dynamisch Dropdown-Listen basierend auf einem Array generiert: jedes Element in diesem Array erstellt eine dropdownlist
.
function getDropDownLists(inputArray, grp) { //input an array and the UI Group we're adding these DDLs to
try {
eval(grp + "Array = [];"); //Creates an array to store the DDLs we're about to create
var listName; //Create variable to store name of DDL we're creating as we iterate through inputArray
for (var i = 0; i < inputArray.length; i++) {
listName = grp + "SrcLevel_" + i.toString(); //Get the name for the DDL we're about to create
eval('var ' + listName + ' = ' + grp + '.add("dropdownlist",[0,0,150,25])'); //add a DDL for the current array item
eval(listName + '.add("item","' + listName + '")'); //This line creates an item in each dropdown to tell me its name
eval(grp + "Array[" + i + "] = " + listName + ";"); //Adds newly created DDL to the storage array
}
} catch (e) {
alert("Error on line " + e.line + ":\n" + e.message);
}
}
Wenn ich diese Funktion aufrufen (es funktioniert hier nicht perfekt, wie ich es gereinigt habe ein bisschen für die Anzeige nach oben) erstellt es richtig alle meine dropdownlists
. Ich möchte jedoch onChange
Ereignisse für jede von diesen erstellen, um die vorherige in dem erstellten Speicherarray zu referenzieren und seinen Inhalt zu ändern. Ich weiß, wie man die onChange
Ereignisse funktioniert, wenn diese bekannt waren dropdownlists
, aber jedes Projekt, an dem ich arbeite, ist anders und ich würde gerne arbeiten, ohne jedes Mal umrüsten zu müssen, wenn sich die Projektanforderungen ändern.
Zum Beispiel, wenn ich getDropDownLists(['mom','dad','baby'],family)
nennen, würde ich drei dropdownlists
erhalten: familySrcLevel_0
, familySrcLevel_1
, familySrcLevel_2
. Wie würde ich dann onClick
Ereignisse für jeden dieser dropdownlists
erstellen, im Wissen, dass ich nicht immer wissen werde, wie viele es gibt? Ist so etwas möglich? Es muss in Extendscript gemacht werden.
Ich sollte hinzufügen, dass ich 'familySrcLevel_1' brauche, um auf die Auswahl von' familySrcLevel_0' in der Liste zu verweisen. –
Klingt kompliziert. Könntest du dein Problem in kleineren Stücken lösen? Außerdem zeigt Ihr Codebeispiel nichts, was Sie mit den 'onChange'-Funktionen versucht haben. Als letztes würde ich vorschlagen, den 'try catch' Block loszuwerden und auch das' eval' macht Ihren Code schwieriger zu debuggen. – fabianmoronzirfas
Warum den 'try catch' Block loswerden? Ist das nicht der Zweck des Debuggens? Ich muss die 'eval' Anweisungen in; Sie ermöglichen es mir, "Drop-down-Listen" im laufenden Betrieb mit eindeutigen Variablennamen zu erstellen, so dass ich sie früher referenzieren kann. –