JS教程:线小测试程序
中,我们用到了几个新的全局变量。这些全局变量为:
var timeLeft =-1; var totalQuestionsToAsk = 0; var quizTimerId = 0; 请将上面全局变量的定义添加到脚本块的开始处。 最后,再对getQuestion()函数进行两处较小的修改,就能完成本章中小测试程序的修改。 首先,修改的是函数开始处的if语句: if (totalQuestionsToAsk != numberOfQuestionsAsked) { var questionNumber = Math.floor(Math.random() * questions.length); 在上一版本的在线小测试程序中,只要可用的问题还没有问完,就可以继续提问。现在,当变量totalQuestionsToAsk的值不等于实际所问问题的数量时,则继续进行提问。totalQuestionsToAsk是一个全局变量,其中保存的是用户在下拉列表框中选中的问题的数量。在前面的代码中,用户选中的问题数量将作为参数传递给resetQuiz()函数,并在resetQuiz()函数中赋值给全局变量totalQuestionsToAsk。 第二个修改的地方是else子句。当小测试结束时,将把用户小测试结果的汇总信息输出到页面上。注意,在前面的resetQuiz()函数中,我们设置了一个计时器以监测剩余时间,当时间到点时就结束在线小测试程序。现在,当小测试程序结束时,应该使用clearInterval()方法清除该计时器。当计时器启动时,该计时器的ID号已经保存在全局变量quizTimerId中,只需将该计时器的ID号传递给clearInterval()方法,即可清除该计时器。另外,当用户并未设置答题的时限时,即用户未在cboTimeLimit下拉列表框中选择一个时限时,则timeLeft的值将为–1,这时,前面的resetQuiz()函数中并未设置任何计时器,因此,这里也就无须对计时器进行清除。为此,在下面的代码中,使用了if (timeLeft != –1)进行判断: currentQNumber = questionNumber; questionsAsked[questionNumber] = true; } else { if (timeLeft != -1) { clearInterval(quizTimerId); } questionHTML = "<h3>Quiz Complete</h3>"; questionHTML = questionHTML + "You got" + numberOfQuestionsCorrect; 到此为止,所有的修改都已经完成了。将上面修改后的代码保存为GlobalFunctions.htm文件。并在浏览器中加载TriviaQuiz.htm页面,以启动在线小测试程序。 如果修改后的代码正常,我们将看到一个如图9-8所示的页面。 图 9-8 如果在Time Limit下拉列表框中选择了一个时限,并单击Start Quiz按钮,则第一个随机抽取的问题将显示在页面上,并且计时器 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |