JavaScript进阶教程(第三课第二部分)

 更新时间:2007年04月06日 00:00:00   作者:  

    定时器的功能主要在于设定某个未来的时间,让Javascript到时执行某个语句:

    var the_string = "hello";
    the_timeout = setTimeout("alert(the_string);", 60000);

    这两行指令让JavaScript等待一分钟然后弹出一个提示框显示the_string变量所包含的内容。所以一分钟后JavaScript就寻找叫做the_string的变量并调用alert()。但是问题是一分钟后该变量中所包含的内容可能是别的什么。所以如果你把这两行代码放在一个函数内,setTimeout有可能会报错。例如在下例中:

    function alertInAMinute()
    {
        var the_string = "hello";
        the_timeout = setTimeout("alert(the_string);", 60000);
    }

    然后你在某个链接中调用这个函数:

    <a href="#" onClick="alertInAMinute(); return false;">blah!</a>

    可能会出错。因为你定义名为the_string的变量时用的是var,而当你在一个函数内使用var时,Javascript将其理解为该变量只存在于该函数中。一旦离开该函数而进入另一个函数后,该变量就会从Javascript的内存中消失。所以当后来需要调用该变量时,Javascript从它的内存中是不可能找到该变量的,错误因此就产生了。

    产生问题的原因在于你将一个变量传递给setTimeout。你可以通过将变量的值而不是变量本身传递给setTime来避免这个问题:

    function alertInAMinute()
    {
        var the_string = "hello";
        the_timeout = setTimeout("alert('" + the_string + "');",60000);
    }

    这段代码将变量the_string从setTimeout的引号中拉出来,由于该变量变量目前不在setTimeout的引号内,JavaScript就可以从内存中找到该变量的值。

    定时器在动态HTML中用途非常广泛,所以值得你仔细研究它。

相关文章

最新评论