1

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

这是存在错误的网络应用程序版本: 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);

}

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

4

1 回答 1

0

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

于 2013-10-31T12:28:17.077 回答