首页 > 开发 > JS > 正文

JavaScript进阶教程(第三课第二部分)第1/2页

2024-09-06 12:42:44
字体:
来源:转载
供稿:网友

    要使定时器循环工作你需要写一个函数实现循环调用。这里是一个例子:

    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);

    很简单,对吧?下面我们看一个复杂循环定时器,一个可以报告时间的定时器。

    现在时间是:

    点击“启动时钟”则时钟开始运行。它从你的计算机中读取时间并每半秒更新一次文字框中的显示。这个例子通过一个自调用的函数设置了一个定时器。同时这个例子可以让你了解一点Date对象的功能。当讲解cookies时,我提到过Date对象。

    以下是代码:
    function writeTime() {
        // 获得日期对象
        var today = new Date();

        // 从对象中获得信息
        var hours = today.getHours();
        var minutes = today.getMinutes();
        var seconds = today.getSeconds();

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表