`
orcl_zhang
  • 浏览: 242174 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

js中setTimeout的问题

阅读更多
    昨天在公司里写了个程序,发现js中setTimeout这块代码出错,于是写了一小段代码专门来测试,便遇到一个不解的问题。看代码。
<script type="text/javascript" src="script/jquery-1.2.6.js"></script>
<script type="text/javascript">
$(document).ready(function(){
	
})

var age = 1;
function AddIt(){
	age = $("#yourAge").val();
	alert(age);
	age ++;
	$("#yourAge").val(age);
	setTimeout("AddIt()",1000);
}
//$("#yourAge").blur(function(){
	AddIt();
//})
</script>
   

<input type="text" id="yourAge" value="4" >

   文本框内的数字每隔一秒会自动加1.
   可是如果将代码放到$().ready(function(){})中,就会出错,或者将注释去掉,由离开焦点来触发函数,同样会出错。google了一下也没有得到结果。希望js高手能解答。
分享到:
评论
4 楼 抛出异常的爱 2009-05-08  
  //IE或不是frame的window
  if (jQuery.browser.msie && window == top)
    (function() {
      if (jQuery.isReady)
       return;
      try {
       // 在ondocumentready之前,一直都会抛出异常      
       // http://javascript.nwbox.com/IEContentLoaded/
       document.documentElement.doScroll("left");
      } catch (error) {
       //一直运行bindReady()(=arguments.callee)
       setTimeout(arguments.callee, 0);
       return;
      }     
      jQuery.ready();//documentready就运行jQuery.ready
    })();
//最后只能依赖于window.load.
  jQuery.event.add(window, "load", jQuery.ready);

是否由于这句话?
可以下载一下原码...试一下
我用的不是IE
3 楼 orcl_zhang 2009-05-07  
补充下问题(代码2)
$(document).ready(function(){	
})
var age = 1;
function AddIt(){
	age = $("#yourAge").val();
	alert(age);
	age ++;
	$("#yourAge").val(age);
	setTimeout("AddIt()",1000);
}
//AddIt();

<input type="text" id="yourAge" value="4" onblur="AddIt()">
当我在text文本框内,事件onblur会触发AddIt()函数,AddIt()函数内部实现了setTimeout方法来回调AddIt()函数本身,当触发onblur事件时,每隔1秒age+1,并弹出,在这个程序里没有错误。
但是在1楼的代码,如果代码修改成这样(代码3)
$(document).ready(function(){	
	$("#yourAge").blur(function(){
		AddIt();
	})
})
var age = 1;
function AddIt(){
	age = $("#yourAge").val();
	alert(age);
	age ++;
	$("#yourAge").val(age);
	setTimeout("AddIt()",1000);
}

<input type="text" id="yourAge" value="4">

也是可行的,就是说如果将事件onblur放到jquery的ready中,代码也会正常运行。
当直接去掉注释,onblur没有触发,但也没有出错,在我的本机是没有问题的(ie7),但是此问题是在公司发现的(ie6),报错。
所以猜测不是函数本身的问题,而是jquery的ready方法问题,怀疑ready是否是只是单纯的js中onload的作用。
经过google得到一些关于ready的资料。
1,方法若不写在ready中,只会执行一次比如绑定click事件。
不是很理解这句话的意思。就我目前的理解是:ready之外的方法不能做自身的循环调用,如果是这样解释就一切明白了。
1楼代码中去掉注释之后,在公司里只是执行了一次,然后就报错误的原因。(在我本机没有触发onblur事件,也没有报错误,估计是浏览器的支持效果不一样),而代码3就正常运行。
2 楼 lucane 2009-05-07  
引了第三方包的程序
很多人都懒得去测试
最多大概看一下。。。

我怎么感觉只有放在ready中才会成功执行啊
页面没加载完就执行
它能取得到页面得元素么

还有报啥错你也不说下?
1 楼 orcl_zhang 2009-04-28  
是大家都不会,还是我没有把问题描述清楚。怎么没人帮忙。。

相关推荐

    Javascript中, setTimeout() 和 setInterval() 的方法

    在JavaScript编程中,`setTimeout()`和`setInterval()`是两个非常关键的函数,它们用于实现异步编程,特别是在处理动画、定时任务或者延迟执行代码时不可或缺。这两个函数都是全局对象`window`的方法,它们的区别...

    关于JS定时器(setTimeout setInterval)定时不准问题1

    关于JS定时器(setTimeout setInterval)定时不准问题1 在JavaScript中,setTimeout和setInterval是两个基本的定时器函数,用于实现延迟执行或循环执行某个函数。然而,这两个函数在执行时往往和我们设置的延迟时间...

    JavaScript中setTimeout的那些事儿

    在setTimeout中设定的时间参数代表函数的最小延迟执行时间。这个时间并不会精确地表示函数将在多少毫秒后执行,因为函数执行还需要等待当前执行栈清空,以及事件队列中其他任务处理完毕。此外,系统资源、JavaScript...

    JS中setTimeout()的用法详解

    ### JS中setTimeout()的用法详解 #### setTimeout()概述 `setTimeout()` 是JavaScript中用于设置一个函数或代码段在指定时间后执行的函数。它是`window`对象的一个方法,通常被用于异步编程、设置延时任务、动画...

    js中settimeout方法加参数.docx

    ### JavaScript中的`setTimeout`方法详解 在JavaScript编程中,`setTimeout`是一个非常实用且重要的功能,它用于在指定的时间间隔后执行某个函数或指定的一段代码。本文将深入探讨`setTimeout`方法及其参数的使用...

    JavaScript中SetInterval与setTimeout的用法详解

    注:调用过程中,可以使用clearTimeout(id_of_settimeout)终止 参数 描述 code 必需,要调用的函数后要执行的 JavaScript 代码串。 millisec 必需,在执行代码前需等待的毫秒数。 setTimeinterval ...

    解决vue 使用setTimeout,离开当前路由setTimeout未销毁的问题

    关于在Vue中管理setTimeout和setInterval,尤其是涉及到Vue的路由切换时定时器未被销毁的问题,主要涉及到Vue的生命周期钩子、JavaScript的this关键字以及ES6箭头函数的特性。 首先,Vue中的生命周期钩子允许我们在...

    js中settimeout方法加参数的使用实例.docx

    在JavaScript中,`setTimeout`是一个非常重要的异步执行方法,用于在指定的毫秒数后调用一个函数或执行某段代码。这个方法是浏览器提供的全局函数,可以在任何作用域中使用。`setTimeout`的基本语法如下: ```...

    Javascript中setTimeOut和setInterval的定时器用法

    Javascript的setTimeOut和setInterval函数应用非常广泛,它们都用来处理延时和定时任务,比如打开网页一段时间后弹出一个登录框,页面每隔一段时间发送异步请求获取最新数据等等。但它们的应用是有区别的。 ...

    关于JS中setTimeout()无法调用带参函数问题的解决方法.docx

    在JavaScript编程中,`setTimeout()`函数常用于设置一个定时任务,它会在指定的毫秒数后执行一个函数或表达式。然而,一个常见的问题是在尝试使用`setTimeout()`调用带参数的函数时,参数往往无法正确传递。这是因为...

    javascript中setTimeout的问题解决方法

    主要介绍了javascript中setTimeout的问题以及对应的解决方法,需要的朋友可以参考下

    实例讲解JS中setTimeout()的用法

    JavaScript中的`setTimeout()`函数是一个非常重要的异步编程工具,它用于在指定的毫秒数之后执行一次函数或指定的代码块。这个函数对于创建动画效果、定时触发某些操作或者延迟处理事件等场景非常有用。 首先,`...

    JS中的setTimeout和setInterval的区别JS中的setTimeout和setInterval的区别

    ### JS中的setTimeout与setInterval的区别 在JavaScript编程中,`setTimeout`与`setInterval`是两个非常常用的函数,用于控制代码执行的时间间隔。虽然它们在功能上有一定的相似性,但其实现的效果却大不相同。下面...

    关于JS中setTimeout()无法调用带参函数问题的解决方法

    本文介绍了两种解决 JavaScript 中 setTimeout() 无法调用带参函数问题的方法。第一种方法通过重写 setTimeout 函数,实现了一个可以接收额外参数的 setTimeout 版本。第二种方法则通过字符串拼接,在一定条件下简单...

    js中setTimeout()与clearTimeout()用法实例浅析.docx

    JavaScript中的`setTimeout()`和`clearTimeout()`是两个非常重要的函数,它们主要用于实现异步编程中的定时操作。在JavaScript中,由于其单线程执行的特性,`setTimeout()`和`clearTimeout()`提供了延迟执行代码和...

    JavaScript中setTimeout和setInterval函数的传参及调用_.docx

    JavaScript 中 setTimeout 和 setInterval 函数的传参及调用 在 JavaScript 中,setTimeout 和 setInterval 函数都是用于在指定的时间点执行某个函数的,但是它们的传参方式和调用方式却有所不同。 setTimeout ...

    javascript中setTimeout使用指南

    javascript中setTimeout使用指南 [removed] /* //方法1 function slows(){ alert&#40;"15S后弹出!"&#41;; } setTimeout("slows()",5000); //方法2 function slows(){ alert&#40;"15S后弹出!"&#41;; } ...

    JS中setTimeout的奇妙用法前端函数节流_.docx

    setTimeout函数在JS中的奇妙用法和函数节流 在JS中,setTimeout函数是一个非常重要的函数,它可以用来实现函数节流,避免函数在短时间内连续被调用,从而提高性能和防止浏览器崩溃。 什么是函数节流? 函数节流...

    Javascript定时器(二)——setTimeout与setInterval

    在这个主题中,我们将深入探讨`setTimeout`和`setInterval`这两个核心定时器函数,它们在JavaScript中的应用以及它们之间的区别。 首先,`setTimeout`函数用于在指定的毫秒数后调用一个函数或执行一段代码。它的...

Global site tag (gtag.js) - Google Analytics