"Incompatible type passed in as a parameter"错误,但仅当值高于某个数字时



我正在为我的数学学生创建计算机生成的数学练习,并尝试与其他数学老师分享该策略。我遇到了一个奇怪的编程问题。问题是我需要对列表框和文本框使用相同的 ID。两者都不会同时出现在应用程序中,一次只会随机生成一个新问题。下面是脚本文件的副本:https://script.google.com/d/1GrswqbSU55vEzWD2V5dJyI95tBbFtNpn0OrnVK7FbbQVm5NpGvqhC_H5/edit?usp=sharing

这是存在错误的 Web 应用程序版本:https://script.google.com/macros/s/AKfycbxfpZdZNNZWUU0KX-nicM27FtliatwCEkwOQ-bhTEu5LHLMDJo/exec

此代码来自生成问题函数:

else if(questionType == 4)
{ 
  if (a==0){a=a+1;}
  if (b==0){b=b+2;}
  if (c==0){c=c+3;}
//Listbox input  
var userInput = app.createListBox().addItem(a).addItem(eval(a-3)).setWidth(250).setStyleAttribute("fontSize", "24").setId('userInput').setName('userInput').setStyleAttribute('color', 'gray');
var correctAnswer = app.createTextBox().setName('correctAnswer').setId('correctAnswer');
var solution = eval(a-3);
correctAnswer.setValue(solution);
}
else if (questionType == 5)
{
  if (a==0){a=a+1;}
  if (b==0){b=b+2;}
  if (c==0){c=c+3;}
    //Textbox input
var userInput = app.createTextBox().setWidth(100).setStyleAttribute("fontSize", "24").setName('userInput').setStyleAttribute('color', 'gray').setValue('answer').setId('userInput');
var correctAnswer = app.createTextBox().setName('correctAnswer').setId('correctAnswer');
var solution = eval(a-c);
correctAnswer.setValue(solution);
}

当再次调用此函数以从应用中删除最后一个用户输入框时,我该怎么办?仅当创建的第二个问题与第一个问题不同的输入类型时,它才会给我一个错误。

事实证明,错误来自对列表框和文本框使用相同的 id。在UiApp中,一次只显示一个,但是无论首先生成什么问题类型,例如文本框,当生成的问题是列表框时就会出现错误,反之亦然。如果生成的所有问题都是相同的用户输入,则错误永远不会发生(例如,如果所有问题都通过列表框收集用户输入)。当启动分数问题功能时,我需要两者的 id 相同。我想一个后续问题是如何从应用程序中删除最后一个输入类型的残留物,以便错误停止发生?我尝试通过getElementById删除用户输入,但它似乎不起作用。

最新更新