要使定时器循环工作你需要写一个函数实现循环调用。这里是
一个例子: 数据挖掘实验室
var the_count = 0;
var the_timeout;
function doTimer()
{
window.document.timer_form.the_text.value = the_count;
the_count += 2;
the_timeout = setTimeout("doTimer();", 2000);
}
数据挖掘研究院
这里用到的定时器就是上一页所用的定时器。当用户点击按钮
时就调用该函数。该函数将the_count的当前值写到文字框中。
然后the_count增加2,则开始调用函数自身。文字框中的数值
也相应更新,the_count在增加2, 则再次调用函数自身。在等
待的这两秒期间浏览器则可以执行其他的同步工作。the_count
一增加2就执行另一次setTimeout()。你不用担心会造成内存
崩溃,因为在给定时间内只有一个setTimeout()在执行。
而无限的"while" 循环则会锁定浏览器的工作,在执行该循环
的过程中浏览器不能同时执行别的任何指令。而setTimeout则
可以使循环的间隙中让浏览器执行别的工作。
如何取消setTimeout
现在你已经学习了如何设置一个无限循环。但是你必须懂得如
何终止循环。其指令就是clearTimeout。上例中定时器还有下
面这个表单元素:
<input type="button" value="stop timer" onClick="clearTimeout(the_timeout);">
点击这个按钮就可以终止定时器。指令是clearTimeout(),其
实很简单,如果你这样设置setTimeout,
the_timeout = setTimeout("some javascript",3000);
你可以这样取消定时器:
clearTimeout(the_timeout);
数据挖掘实验室
现在时间是:
以下是代码:
function writeTime() {
// 获得日期对象
var today = new Date();
// 从对象中获得信息
var hours = today.getHours();
var minutes = today.getMinutes();
var seconds = today.getSeconds();
// fixTime 使分和秒可以正常显示
// 对于小于10的数字则在该数字前加一个0
minutes = fixTime(minutes);
seconds = fixTime(seconds);
//将时间字符串组合在一起并写出
var the_time = hours + ":" + minutes + ":" + seconds;
window.document.the_form.the_text.value = the_time;
//每半秒钟执行一次该函数
the_timeout= setTimeout(′writeTime();′,500);
}
function fixTime(the_time) {
if (the_time <10) { the_time = "0" + the_time; } return the_time; } 数据挖掘研究院
我们仔细研究一下代码。 数据挖掘研究院
- var today = new Date();
- 正如new Array() 可以生成一个新的数组,你可以可以
用new Date() 生成一个新的日期对象。生成对象之后,
你可以对其提出你的问题。你生成的新的日期对象的括号
中间没有任何参数, 但JavaScript会查询计算机的始终
并用其生成新的日期对象。现在我们的日期对象名为
"today" ,我们可以从中提取相应的信息。 - var hours = today.getHours();
- 这条用于获得当前的小时值。它是军队格式的时间,即,
如果当前时间是下午两点,则它返回的值是14。getHours()
是Javascript的日期对象内置的方法调用。 - var minutes = today.getMinutes(); var seconds = today.getSeconds();
- 这几行原理和getHours()类似。
- minutes = fixTime(minutes);
- getMinutes存在一些问题,如果分钟是11:01, getMinutes
将返回 "1"。时钟的显示格式可不是这样,它应该显示为
“01”。fixTime函数就是用于执行纠正显示格式的功能。 - 下面两行将字符串组合在一起并显示出来,
- the_timeout = setTimeout(′writeTime();′, 500);
- 设置没半秒执行一次该函数的循环。
点击“启动时钟”则时钟开始运行。它从你的计算机中读取时间
并每半秒更新一次文字框中的显示。这个例子通过一个自调用
的函数设置了一个定时器。同时这个例子可以让你了解一点Date
对象的功能。当讲解cookies时,我提到过Date对象。 数据挖掘研究院

