快速业务通道

JS教程:线小测试程序

作者 佚名技术 来源 网页制作 浏览 发布时间 2012-03-07
剩余的时间,以便提示用户。

前面我们已经知道,当调用resetQuiz()函数时,将复位在线小测试程序,并将全局变量timeLeft设置为以秒为单位的时限值,在规定的时间内用户必须完成小测试。每隔1s将调用一次updateTimeLeft()函数,在updateTimeLeft()函数的第一行代码中,将剩余的时间减去1s:

 timeLeft--;

其后的if语句用以检查timeLeft是否为0,即是否还有剩余时间。如果timeLeft为0,则表示无剩余时间,这时将变量numberOfQuestionsAsked的值设置为全局变量totalQuestionsToAsk的值,即用户所选择的要回答问题的数量。接着,将页面导航到AskQuestion.htm页面,在该页面中将认为问题已经回答完毕并终止小测试程序,而不是继续提出一个新问题。

如果还有剩余时间,则该if语句的else子句将被执行,并更新浏览器的状态栏,以显示剩余的分钟数和秒数。

这里,需要将timeLeft中保存的以秒为单位的时间值拆分成分钟数和秒数。首先,可以使用下面这行代码获取分钟数的值:

var minutes = Math.floor(timeLeft / 60);

上面的代码将返回变量timeLeft中保存的总秒数除以60的商的整数部分,这正是我们所需要的分钟数。而下面的代码则用以获得秒数:

var seconds = timeLeft - (60 * minutes);

在上面的代码中,用总的秒数timeLeft减去分钟数所对应的秒数,即可得到除去分钟数之后剩余的秒数。例如,如果timeLeft是61,则分钟数为:

minutes = 61 / 60 = 1.01667

取整后将返回整数1,表示1分钟,而剩余的秒数为:

seconds = 61 - (60 * 1) = 1

我们希望按“分钟:秒钟”的格式将剩余时间显示在浏览器的状态栏中,例如对于上面的例子,希望将剩余时间显示为01:01。但是,当分钟或者秒钟的值小于10时,把分钟和秒钟的字符串连接起来将是1:1这样一个字符串。对于在线小测试程序,分钟数不会超过5,实际上只需直接在前面加上0即可。但是,为了使代码能适应未来需求发生的变化—— 例如允许用户回答问题的时间超过9分钟,则应使用if语句进行检查,以便确定分钟数是否小于10。

要修正格式问题,只需在分钟数或秒钟数小于10时,在其前面添加一个额外的0即可,相应代码如下所示:

if (minutes < 10)

minutes = "0" + minutes;

if (seconds < 10)

seconds = "0" + seconds;

最后,更新浏览器状态栏中剩余时间的显示:

window.status = "Time left is " + minutes + ":" + seconds;

在前面的这两个函数

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号