您的位置:寻梦网首页编程乐园JavaScriptJavaScript 高级教程
第 1 课 第 2 课 第 3 课 第 4 课 第 5 课

JavaScript高级教程 - 第三课

作者: Thau   

第六页:给定时器加入变量

定时器的功能主要在于设定某个未来的时间,让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_stringsetTimeout的引号中拉出来,由于
该变量变量目前不在setTimeout的引号内,JavaScript就可以从
记忆中找到该变量的值。

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

要使所有的拥护都能看到动态HTML的内容,你必须了解如何识别
用户所使用的浏览器。>>

JavaScript高级教程
第一页 Javascript高级教程 - 第三课
第二页 如何给事件定时
第三页 定时循环的概念
第四页 定时循环的做法
第五页 一个Javascript编写的时钟
第六页 给定时器加入变量
第七页 识别用户的浏览器
第八页 如何识别用户的浏览器
第九页 对象和方法的识别
第十页 History对象

[第1课][第2课][第3课][第4课][第5课]

来源: Wired Digital Inc.