我有一个select表单元素,它接受多个项目。
提交表单时,我将项目添加到数组中然后处理它们,然后运行数组以对每个项目执行操作。
当只选择了一个项目时,我遇到了问题。
当一个项目通过时,数组的长度不是1,它是所选项目中的字符数。
function processForm(formObject){
var list = [];
list = formObject.listElement;
for (var i=0;i<list.length;i++) {
Logger.log(list[i]);
}
}
如果在表单中选择了多个项目,上面将记录每个项目。如果只选择一个,则长度是该项目中的字符数。我如何解决这个问题,如果只选择了一个项目,我们将其视为一个包含一个项目的数组?
答案 0 :(得分:1)
你有:
var list = [];
将空数组分配给 list ,然后:
list = formObject.listElement
将其替换为 formObject.listElement 返回的内容,因此初始分配毫无意义。
您尚未指出 listElement 的控件类型,可能是Class MultipleChoiceItem或Class ListItem。两者都有一个getChoices方法,返回一个选择数组。
如果使用该方法,则无需测试返回值是否为数组,它应始终为(可能为空)数组:
list = formObject.listElement.getChoices();
假设 listElement 是上述对象之一。
答案 1 :(得分:0)
通过字符串迭代就像它是一个数组一样,会给出你描述的行为。您可以先转换数组,如果它不是一个
var list = formObject.listElement;
if (!Array.isArray(list)) list = [list];