首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JQuery,setTimeout不工作

JQuery,setTimeout不工作
EN

Stack Overflow用户
提问于 2009-09-30 02:56:02
回答 4查看 154.5K关注 0票数 51

我还是个JQuery新手,在让我的ajax示例正常工作的过程中,我被setTimeout卡住了。我已经将它分解到应该添加“”的位置。每秒发送到div。

相关代码在两个文件中。

index.html

代码语言:javascript
复制
<html><head>
<script type='text/javascript' src='jquery.js'></script>
<script type='text/javascript' src='myCode.js'></script>
</head>
<body>
<div id='board'>Text</div>
</body>
</html>

myCode.js

代码语言:javascript
复制
(function(){
   $(document).ready(function() {update();});

   function update() { 
      $("#board").append(".");
      setTimeout('update()', 1000);     }
 })();

myCode.js文件运行正常,"update()“第一次运行,但再也不会运行。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-09-30 02:57:15

这里有几个问题。

首先,你在anonymous function中定义你的代码。此构造:

代码语言:javascript
复制
(function() {
  ...
)();

做两件事。它定义一个匿名函数并调用它。这样做有一定的理由,但我不确定这是你真正想要的。

您正在向setTimeout()传递一个代码块。问题是,当这样执行时,update()不在作用域内。但是,如果你传入一个函数指针,它就会起作用:

代码语言:javascript
复制
(function() {
  $(document).ready(function() {update();});

  function update() { 
    $("#board").append(".");
    setTimeout(update, 1000);     }
  }
)();

因为函数指针update在该块的作用域内。

但就像我说的,不需要匿名函数,所以你可以像这样重写它:

代码语言:javascript
复制
$(document).ready(function() {update();});

function update() { 
  $("#board").append(".");
  setTimeout(update, 1000);     }
}

代码语言:javascript
复制
$(document).ready(function() {update();});

function update() { 
  $("#board").append(".");
  setTimeout('update()', 1000);     }
}

这两种方法都是有效的。第二种方法之所以有效,是因为代码块中的update()现在在作用域内。

我也更喜欢$(function() { ... }缩短的代码块形式,而不是在update()中调用setTimeout(),您可以直接使用setInterval()

代码语言:javascript
复制
$(function() {
  setInterval(update, 1000);
});

function update() {
  $("#board").append(".");
}

希望这能澄清这一点。

票数 113
EN

Stack Overflow用户

发布于 2009-09-30 02:58:19

代码语言:javascript
复制
setInterval(function() {
    $('#board').append('.');
}, 1000);

如果你想在某一时刻停止它,你可以使用clearInterval。

票数 21
EN

Stack Overflow用户

发布于 2009-12-22 12:43:00

SetTimeout用于使您的代码集在指定的时间段后执行,因此对于您的需求,最好使用setInterval,因为它将在指定的时间间隔内每次调用您的函数。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1495903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档