如果仅选择一个项目,如何处理具有多个项目的选择

时间:2014-09-02 11:11:04

标签: javascript forms google-apps-script

我有一个select表单元素,它接受多个项目。

提交表单时,我将项目添加到数组中然后处理它们,然后运行数组以对每个项目执行操作。

当只选择了一个项目时,我遇到了问题。

当一个项目通过时,数组的长度不是1,它是所选项目中的字符数。

function processForm(formObject){
  var list = [];
  list = formObject.listElement;

  for (var i=0;i<list.length;i++) {
    Logger.log(list[i]);
  }
}

如果在表单中选择了多个项目,上面将记录每个项目。如果只选择一个,则长度是该项目中的字符数。我如何解决这个问题,如果只选择了一个项目,我们将其视为一个包含一个项目的数组?

2 个答案:

答案 0 :(得分:1)

你有:

var list = [];

将空数组分配给 list ,然后:

list = formObject.listElement

将其替换为 formObject.listElement 返回的内容,因此初始分配毫无意义。

您尚未指出 listElement 的控件类型,可能是Class MultipleChoiceItemClass ListItem。两者都有一个getChoices方法,返回一个选择数组。

如果使用该方法,则无需测试返回值是否为数组,它应始终为(可能为空)数组:

list = formObject.listElement.getChoices();

假设 listElement 是上述对象之一。

答案 1 :(得分:0)

通过字符串迭代就像它是一个数组一样,会给出你描述的行为。您可以先转换数组,如果它不是一个

var list = formObject.listElement;
if (!Array.isArray(list)) list = [list];