首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 怎么让JS延迟10S执行? [已结帖,结帖人:fisherboy]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fisherboy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-07-23 09:46:01 楼主
    比如
    for(i=1;i <10;i++)
    {
      alert(i);
      delay(10);//延迟10s再执行下一步
    }
    有没有现成的方法?函数?
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • strife
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 09:50:231楼 得分:0
    interval(fun,10000)
    setTimeOut
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lawrendc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 09:50:452楼 得分:0
    JScript code
    setTimeout(function(){alert("Hello world");},10000);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • strife
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 09:51:383楼 得分:0
    第一个写错了setInterval
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cc8364
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 09:52:004楼 得分:0
    settimeout
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lawrendc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 10:02:585楼 得分:0
    javascript is case-sensitive language
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • s_liangchao1s
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

    发表于:2008-07-23 10:12:466楼 得分:0
    在js中让for循环延时?不现实
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yifanwu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 10:48:097楼 得分:0
    可以实现让浏览器假死10秒,哈哈
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lyboyc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 10:50:388楼 得分:0
    2楼正解setTimeout('function(){......}',10000); 
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • s_liangchao1s
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

    发表于:2008-07-23 10:51:329楼 得分:0
    引用 8 楼 lyboyc 的回复:
    2楼正解setTimeout('function(){......}',10000); 


    还真有敢说正解的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • bhtfg538
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 10:56:0510楼 得分:0
    setInterval
    不行哦

    setTimeout
    只执行一次吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lawrendc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 10:56:3411楼 得分:0
    引用 9 楼 s_liangchao1s 的回复:
    引用 8 楼 lyboyc 的回复:
    2楼正解setTimeout('function(){......}',10000); 


    还真有敢说正解的


    老大 我那句错在哪里??
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • s_liangchao1s
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

    发表于:2008-07-23 10:59:0112楼 得分:0
    引用 11 楼 lawrendc 的回复:
    引用 9 楼 s_liangchao1s 的回复:
    引用 8 楼 lyboyc 的回复:
    2楼正解setTimeout('function(){......}',10000); 


    还真有敢说正解的


    老大 我那句错在哪里??

    哦 也许我理解错了 我理解楼主的要求是让for循环每隔10秒走一步
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lawrendc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 11:00:1313楼 得分:0
    呵呵
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • s_liangchao1s
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

    发表于:2008-07-23 11:01:2014楼 得分:0
    引用 13 楼 lawrendc 的回复:
    呵呵

    你说我理解的对不?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • nicholsky
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2008-07-23 11:14:5615楼 得分:0
    s_liangchao1s说得对,JS无办法在for循环里延迟一个时间再执行下一次的循环,不行的。

    只能变通,不用for来循环,采取setTimeout或setInterval去执行i次函数或语句,把i作为全局变量或传递参数进行每次+1,以前有人试过想做出一个完美的类似vbs的sleep,但结果总是不如愿的,别想了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lawrendc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 11:35:4616楼 得分:0
    引用 14 楼 s_liangchao1s 的回复:
    引用 13 楼 lawrendc 的回复:
    呵呵

    你说我理解的对不?


    right
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • helei123a
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 16:01:0217楼 得分:0
    setTimeOut
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wangruibaobei
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 16:20:3118楼 得分:0
    干嘛要这样写
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lyboyc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 17:30:0019楼 得分:0
    引用 9 楼 s_liangchao1s 的回复:
    引用 8 楼 lyboyc 的回复:
    2楼正解setTimeout('function(){......}',10000);


    还真有敢说正解的

    难道不对吗?LZ说的是“怎么让JS延迟10S执行?”又不是要循环。

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • cad502
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 18:05:1220楼 得分:0
    引用 2 楼 lawrendc 的回复:
    JScript code
    setTimeout(function(){alert("Hello world");},10000);


    正解
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • changke18
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 18:09:3521楼 得分:18
    等效法:(将i设置成全局变量,并setInterval实现函数功能,并给i加1)
    JScript code
    for(i=1;i <10;i++) { alert(i); delay(10);//延迟10s再执行下一步 } 等效于 <script> var i=1; var timeID=null; function display() { timeID = window.setInterval("delay()", 1000); } function delay() { if(i<10) { alert(i); i++; } else { window.clearInterval(timeID); } } display(); </script>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lyboyc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 18:34:3922楼 得分:0
    循环执行,假设循环5秒,可以这样
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>

        <title>My JSP '002.jsp' starting page </title>
    <script type="text/JavaScript">

    var stingTime;
    var  timeLeft  =  1 ; 
      function  countTime() 
      { 
      document.getElementById("hehe").disabled=true;

      while(timeLeft%5  ==  0) 
      { 
              alert("你好!");
              break; 
      }   
              document.getElementById("timeDiv").innerHTML  =  "timeLeft  = "  +  timeLeft  +  "秒"; 
              timeLeft  =  timeLeft  -  1; 
              setTimeout('countTime()',1000); 
      } 

    </script> </head>
    <body>
    <input type='button' value='开始' onclick='countTime();' id='hehe'>
    <div id='timeDiv' > </div>
    </body> </html>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • neo_yoho
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-23 18:35:1523楼 得分:2
    for里面延迟...会假死的...
    HTML code
    <SCRIPT LANGUAGE="JavaScript"> for(var i=1;i <5;i++) { alert(i); delay((new Date()).getTime(),3); } function delay(ms,n) { while(((new Date()).getTime()-n*1000)<=ms) { } } </SCRIPT>
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chris9999
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-24 09:55:0824楼 得分:0
    setTimeOut
    就可以了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • fisherboy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-24 16:49:3325楼 得分:0
    [color=#0000FF]如果用setTimeout  setInterval 我就不用来问你们了。
    别把我的问题看的那么简单。
    我就是要在for循环里实现。

    另外,
    有一100行的代码里,
    我在50行和52行之间的51行,要实现延时10S,10S之后再执行第52行的代码。
    这100行代码没有一个function。全部是顺序执行的。


    附:
    别问我为什么100行代码没有一个函数。只要你在现实开发中,你就有可能遇到很棘手的现实的问题。
    事实如此。
    怎么样?[/color]
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • s_liangchao1s
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 3

    发表于:2008-07-24 17:01:4726楼 得分:0
    个人认为 单纯从for循环的角度来看 是无法实现的
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • orz_ORZ_orz
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-24 17:02:0327楼 得分:0
    关注
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lt1129
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-24 17:02:0528楼 得分:0
    setTimeOut
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lyboyc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-24 17:53:5229楼 得分:0
    引用 25 楼 fisherboy 的回复:
    [color=#0000FF]如果用setTimeout  setInterval 我就不用来问你们了。
    别把我的问题看的那么简单。
    我就是要在for循环里实现。

    另外,
    有一100行的代码里,
    我在50行和52行之间的51行,要实现延时10S,10S之后再执行第52行的代码。
    这100行代码没有一个function。全部是顺序执行的。


    附:
    别问我为什么100行代码没有一个函数。只要你在现实开发中,你就有可能遇到很棘手的现实的问题。
    事实如此。
    怎么样?[/col…


    楼主去翻翻数据结构吧,里面有把循环全部转成非循环的方法 ,我是忘记了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lyboyc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-24 17:57:5930楼 得分:0
    写错了,书里似乎是把一种循环用另一种循环替代,记得数据结构书里有这个,LZ自己学看吧,清华版的那本
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • HonorsOffice
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-26 17:21:2331楼 得分:0
    JS中没有你说的那种自带的方法,但可以通过模拟来实现这种效果。
    网站上搜索一下,去吧。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • nicholsky
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2008-07-26 17:51:1632楼 得分:0
    21楼的就是一种变能方法,而且只能这样,23楼的就说了,强制搞一些东西去进行延迟会让IE假死,不现实,所以楼主想要构造一个能在for里延迟的函数是不可能实现的,明知不可为的事就不要想了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • leosming
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-07-27 13:59:3433楼 得分:0
    引用 2 楼 lawrendc 的回复:
    JScript code
    setTimeout(function(){alert("Hello world");},10000);
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • itpentiuman
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-06 15:57:4834楼 得分:0
    我找寻JavaScript的sleep函数已经几年了,没有
    修改 删除 举报 引用 回复