GAS脚本编辑器中的语法错误

时间:2013-12-22 21:32:08

标签: javascript google-apps-script

我在以下代码中出错,我找不到原因......

使用UiApp我在ListBox

中定义了几个for loop这样的内容
   var critGlist = app.createListBox().setName('critGlist'+n).setId('critGlist'+n).addChangeHandler(refreshGHandler).addChangeHandler(cHandlerG).setTag(listItem[n]);

我添加了一个TAG以便能够在处理函数中检索一个值,因为当我向这个列表添加项目时,我这样做:

   for(var c=0;c<listItem[n].length;++c){
      critGlist.addItem(listItem[n][c],c);// the returned value is c, the value shown is listItem[n][c] 
    }

然后在我的处理函数中,我检索值c,它是数组元素的索引listItem[n]

由于我将此数组的字符串化值存储为标记,因此我必须首先检索标记,然后使用索引获取所需的值...

这就是问题所在!

我尝试了以下3个代码:

    var idx = Number(e.parameter['critGlist'+c]);// this works and I get the index

    var item = e.parameter.critGlist0_tag.split(',')[idx];// this also works for a fixed index (0 here) but I need to use it in a for loop so I tried the code below

    var item = e.parameter['critGlist'+c]_tag.split(',')[idx];// this generates an syntax error 
// error message :"Signe ; manquant avant l'instruction. (ligne 129, fichier "calculatrice Global")"
// which means : missing ; before statement (line 129...

我错过了一些明显的东西吗?我该怎么写不一样?

显然,这是不被接受的下划线......但我怎么能不使用它呢?

好吧,我有一些其他的可能性来获得我想要的结果(例如使用隐藏的小部件或者其他一些临时存储,即使让listBox返回值而不是索引)但是我仍然想知道为什么这种语法错了......

我不是要求使用不同的代码(前面提到过很多其他方法),只是解释了这段代码中的错误以及 #!##å »ÛÁØ 下划线;)

1 个答案:

答案 0 :(得分:1)

您需要将整个属性放在括号内,如下所示

var item = e.parameter['critGlist'+c+'_tag'].split(',')[idx];// this generates an syntax error