定时循环的概念
其制作方法就是让按钮的onClick事件调用以下函数:
function ringBell() { var timer1 = setTimeout("window.document.the_form.the_text.value='3 seconds!';",3000); var timer2 = setTimeout("window.document.the_form.the_text.value='6 seconds!';",6000); var timer3 = setTimeout("window.document.the_form.the_text.value='9 seconds!';",9000); }
它的意思是,“从现在开始,三秒钟后显示‘三秒’,六秒钟后显示‘六秒’,九秒钟后显示‘九秒’”,很好理解,对吧?
但是,下面这样却不行:
function doDumbTimer() {var timer1 = setTimeout("window.document.the_form.the_text.value='3 seconds!';",3000); var timer2 = setTimeout("window.document.the_form.the_text.value='6 seconds!';",3000); var timer3 = setTimeout("window.document.the_form.the_text.value='9 seconds!';",3000); }
试一下这个错误的定时代码看看会发生什么?faulty timer code?
请注意当你等了三秒钟,三个定时信息之一神秘地出现在文本框里,然后就停在那儿。在上面的不好的代码中,每个setTimeout都连续地执行,(就是“从现在开始,三秒钟后显示‘三秒’,三秒钟后显示‘六秒’,三秒钟后显示‘九秒’”)。所以当三秒钟以后,三件事儿都发生了,你得到的正好是其中最后发生的结果----当然不是你希望的结果。
一旦你理解了,setTimeout()还是相当容易使用的。但是一个难点儿的问题提出来了:你如何去做一个定时器,让某件事每隔2秒钟就发生一次,从现在一直到永远?象这个例子:(请参考附件)
先别担心停止定时器按钮,稍后我会讲clearTimeouts。只要想想你怎么能够让定时器无限循环。实际上这是一个非常重要的问题而不仅仅是一个小练习。就象我前边提到的那样,当你用动态HTML让什么东西缓缓地在屏幕上移动时,就执行一个定时循环:“轻轻移动一点,等待,再移动一点,再等待.....如此这般”你想到这个问题了吗?
好,答案并非那么简单。你无法象上面的那个例子那样,只用一个函数,就能够每隔两秒就改变文本框的内容,象这样:
function theTimer() { var timer1 = setTimeout("changeTextBoxTo(2);",2000); var timer2 = setTimeout("changeTextBoxTo(4);",4000); var timer3 = setTimeout("changeTextBoxTo(6);",6000); var timer4 = setTimeout("changeTextBoxTo(8);",8000); var timer5 = setTimeout("changeTextBoxTo(10);",10000); }
因为,好,你可以看出为什么不行:如果你想用这种方法让某件事无限循环下去,你必须有无限多行的代码。相比起其它问题,比如敲得你肩酸背痛来说,光是下载一个包含了无限多行javascript的页面就需要太长的时间,所以,这种方法根本就谈不上是一种选择。这个也不行,虽然它看起来更酷一些:
function theTimer() { the_time = 0; hellIsHot = true; while (hellIsHot == true) { the_time += 2; var timer = setTimeout("changeTextBoxTo(the_time);", the_time*1000); } }
请把程序研究一会,看看会得到什么结果。但不要尝试去运行它,否则结果会使你很不愉快。让我们在“while"循环中走几趟:
第一遍
while (hellIsHot == true) : 是的地狱还是热的。
the_time += 2 : 所以现在 the_time = 2
var time = setTimeout("changeTextBoxTo(2);", 2000) :所以, 从现在开始两秒后, 文本框变成了“2.",这正是我们想要的结果。
第二遍
while (hellIsHot == true) : 确实,地狱还是热的..
the_time += 2 : 所以现在 the_time = 4
var time = setTimeout("changeTextBoxTo(4);", 4000) :所以, 从现在开始四秒后, 文本框变成了“4.",很好。
第三遍
while (hellIsHot == true) : 不, 地狱一点也没凉快.
the_time += 2 : 所以现在 the_time = 6
var time = setTimeout("changeTextBoxTo(6);", 6000) :所以, 从现在开始六秒后,文本框变成了“6.",好。
第四遍
while (hellIsHot == true) : 是的,还是热的。
还那样
还那样
你看明白了。这段代码看起来象是做对了。不幸的是其实不是这样。相反它创建了一个死循环,一直设定setTimeouts直到地狱冷下来。这里有两个问题。首先,当在循环里时,你的浏览器就无法做任何其它的事情,基本上就是停止,执行动作,再设定下一个定时器,一直到永远。第二,每次设定setTimeout时,浏览器都要记住你预定执行的内容以及何时执行。最终你的浏览器会把内存耗尽,这时你的浏览器会崩溃,或者你的计算机会崩溃,或者把你弄疯而永远也不想再写一行Javascript程序了。
一点都不好幸运的是,有一种方法能够写出成功的定时器循环。
一、推荐使用迅雷或快车等多线程下载软件下载本站资源。
二、未登录会员无法下载,登录后可获得更多便利功能,若未注册,请先注册。
三、如果服务器暂不能下载请稍后重试!总是不能下载,请点我报错 ,谢谢合作!
四、本站大部分资源是网上搜集或私下交流学习之用,任何涉及商业盈利目的均不得使用,否则产生的一切后果将由您自己承担!本站将不对任何资源负法律责任.如果您发现本站有部分资源侵害了您的权益,请速与我们联系,我们将尽快处理.
五、如有其他问题,请加网站设计交流群(点击这里查看交流群 )进行交流。
六、如需转载本站资源,请注明转载来自并附带链接
七、本站部分资源为加密压缩文件,统一解压密码为:www.aizhanzhe.com
- 1尚硅谷前端学科全套视频[AVI][130.72GB]
- 2深入理解php:高级技巧、面向对象与核心技术(原书第3版) 【PDF】
- 3开发高质量PHP框架与应用的实际案例解析【PDF】
- 4响应式Web图形设计 ([美]Christopher Schmitt) 中文【PDF】
- 5响应式Web设计:HTML5和CSS3实践指南【PDF】
- 6响应式Web设计:HTML5和CSS3实战 第2版 (本·弗莱恩) 中文【PDF】
- 7Axure RP8 实战手册 网站和APP原型制作案例精粹(小楼一夜听春语) 试读版【PDF】【15.4MB】
- 8[马上学Android]安卓开发视频教程
- 9Android开发视频教程
- 10PHP100视频教程
- 1Java编程思想On Java 8[PDF][中文][英文][源码][15.31MB]
- 2PostgreSQL实战 (谭峰等著)【PDF】【221.29MB】
- 3【机器学习】菜菜的sklearn课堂(1-12全课)[PDF][源码][157.45MB]
- 4UNREAL ENGINE 4蓝图完全学习教程[PDF][66.67MB]
- 5加密与解密(第4版)[PDF][光盘源码][1.15GB]
- 6Qt 5.9 C++开发指南[PDF][276.26MB]
- 7Python数据分析与应用PPT、教案、实训数据、习题答案[PPT][142.49MB]
- 8数据中台:让数据用起来[PDF][12.80MB]
- 9计算机网络:自顶向下方法(第7版) 【PDF】【英文】【17.46MB】
- 10大话5G:走进万物互联新时代【PDF】【37.31MB】