Extendscript:为它们动态创建下拉列表和onChange函数

时间:2016-06-17 23:36:25

标签: javascript extendscript

这是一个具有挑战性的问题。我对脚本编写起来相对较新,但有一个想法,我想要开始工作。

我有一个基于数组动态生成下拉列表的脚本:该数组中的每个项目都会创建一个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);
          }
        }
&#13;
&#13;
&#13;

当我调用此功能时(由于我已将其清理干净以用于显示目的,它可能无法正常工作)它正确创建了我的所有dropdownlists。但是,我想为每个事件创建onChange事件,以引用创建的存储阵列中的前一个事件并更改其内容。我知道如果onChange事件已经知道dropdownlists事件是如何工作的getDropDownLists(['mom','dad','baby'],family),但我正在处理的每个项目都是不同的,我希望在不事件的情况下让它工作每次项目要求发生变化时都要重组。

例如,当我致电dropdownlists时,我会得到三个familySrcLevel_0familySrcLevel_1familySrcLevel_2onClick。然后我将如何为这些dropdownlists中的每一个创建{{1}}个事件,因为我知道我不知道有多少事件?这样的事情可能吗?它必须在Extendscript中完成。

1 个答案:

答案 0 :(得分:0)

解决方案是在上面函数的末尾创建另一个包含eval函数的onChange语句。