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中用途非常广泛,所以值得你仔细研究它。

相关文章

  • 以Python代码实例展示kNN算法的实际运用

    以Python代码实例展示kNN算法的实际运用

    这篇文章主要介绍了以Python代码实例展示kNN算法的实际运用,这里举了一个用来预测豆瓣电影用户的性别的例子,需要的朋友可以参考下
    2015-10-10
  • javaScript复制功能调用实现方案

    javaScript复制功能调用实现方案

    说到使用js实现点击复制的功能,我下面想说的方法也是和网上的大同小异的。js实现是很简单,最难的是兼容问题,毕竟用IE以外的人还是有很多的
    2012-12-12
  • javascript数据代理与事件详解分析

    javascript数据代理与事件详解分析

    所谓数据代理(也叫数据劫持),指的是在访问或者修改对象的某个属性时,通过一段代码拦截这个行为,进行额外的操作或者修改返回结果。比较典型的是 Object.defineProperty() 和 ES2015 中新增的 Proxy 对象
    2021-11-11
  • js JSON.stringify()基础详解

    js JSON.stringify()基础详解

    JSON.stringify() 方法是将一个JavaScript值(对象或者数组)转换为一个 JSON字符串,如果指定了replacer是一个函数,则可以选择性的替换值,或者如果指定了replacer是一个数组,可选择性的仅包含数组指定的属性
    2019-06-06
  • javascript内置对象arguments详解

    javascript内置对象arguments详解

    这篇文章主要介绍了javascript内置对象arguments,实例讲解arguments是什么怎么用,需要的朋友可以参考下
    2014-03-03
  • JavaScript中BOM和DOM详解

    JavaScript中BOM和DOM详解

    本文主要讲解了JavaScript中BOM和DOM,BOM为浏览器对象模型,DOM 为文档对象模型,两者之间有很大的区别,感兴趣的小伙伴可以阅读一下这篇文章,了解相关内容
    2021-08-08
  • Javascript中的五种数据类型详解

    Javascript中的五种数据类型详解

    这篇文章主要介绍了Javascript中的五种数据类型详解,需要的朋友可以参考下
    2014-12-12
  • Javascript模块化编程(一)模块的写法最佳实践

    Javascript模块化编程(一)模块的写法最佳实践

    Javascript模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心的业务逻辑,其他都可以加载别人已经写好的模块但是,Javascript不是一种模块化编程语言,它不支持类class,更遑论模块module了
    2013-01-01
  • 详解js加减乘除精确计算

    详解js加减乘除精确计算

    这篇文章主要介绍了js加减乘除精确计算,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • JavaScript Math.ceil 方法(对数值向上取整)

    JavaScript Math.ceil 方法(对数值向上取整)

    js Math.ceil用于对数值向上取整,即得到大于或等于该数值的最小整数,需要的朋友可以参考下
    2015-01-01

最新评论