当只选择一个项目时,如何处理具有多个项目的选择

How to handle a select with multiple items when only one item is selected

本文关键字:项目 选择 处理 何处理 一个      更新时间:2023-09-26

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

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

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

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

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

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

您有:

var list = [];

它将一个空数组分配给列表,然后:

list = formObject.listElement

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

您还没有指出listElement是什么类型的控件,它可能是Class MultipleChoiceItem或Class ListItem。两者都有一个getChoices方法,该方法返回一个选项数组。

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

list = formObject.listElement.getChoices();

假设listElement是上述对象之一。

将字符串当作数组进行迭代,可以得到所描述的行为。你可以先转换一个数组,如果它还不是一个

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