CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  JavaScript

在线等待;请教一个菜问题

楼主quedan22499()2004-07-01 11:51:30 在 Web 开发 / JavaScript 提问

<script>  
  var   tcount   =   0;     //全局变量  
  function   CountTime(iSeconds)    
  {  
          //iSeconds秒后运行MyFun()  
          tcount++;  
          timeLeft   =   iSeconds   -   tcount;  
          timer=window.setTimeout("CountTime("+iSeconds+")",1000);  
          if(timeLeft<=0)  
  {  
  clearTimeout(timer);  
  MyFun();  
  }  
  }  
  function   MyFun()  
  {  
          alert("ok");  
  }  
  </script>  
  <input   type="button"   onclick="CountTime(3)"   value="3秒">  
  <input   type="button"   onclick="CountTime(5)"   value="5秒">  
   
  <div   id="time"></div>  
  <body>  
  在函数中   tcount的值每次运行时都是0,函数将会循环执行下去不停止,怎么将   tcount设置成一个变量,保存执行后的值:比如执行一次后是1,下次执行时还是1,则tcount++则是2  
   
  问题点数:100、回复次数:5Top

1 楼net_lover(【孟子E章】)回复于 2004-07-01 12:04:20 得分 50

<script>  
  var   s,tcount   =   0;     //全局变量  
  function   CountTime(iSeconds)    
  {  
        s   =   iSeconds  
        tcount   =   0  
        c()  
  }  
   
  function   c()  
  {  
    //iSeconds秒后运行MyFun()  
          tcount++;  
          timeLeft   =   s   -   tcount;  
          timer=window.setTimeout("c()",1000);  
          time.innerText=timeLeft  
          if(timeLeft<=0)  
  {  
  clearTimeout(timer);  
  MyFun();  
  }  
  }  
  function   MyFun()  
  {  
          alert("ok");  
  }  
  </script>  
  <input   type="button"   onclick="CountTime(3)"   value="3秒">  
  <input   type="button"   onclick="CountTime(5)"   value="5秒">  
   
  <div   id="time"></div>  
  <body>Top

2 楼quedan22499()回复于 2004-07-01 13:33:15 得分 0

time.innerText=timeLeft,这句话是什么意思,运行的时候不能识别time???  
  Top

3 楼meizz(梅花雪)回复于 2004-07-01 13:41:09 得分 0

不太明白楼主的意思,   不过在设置延时器的用法上楼主没有必要用   clearTimeout  
  var   tcount   =   0;     //全局变量  
  function   CountTime(iSeconds)    
  {  
          tcount++;  
          timeLeft   =   iSeconds   -   tcount;  
          if(timeLeft<=0)     MyFun();  
          else   window.setTimeout("CountTime("+iSeconds+")",1000);  
  }  
  function   MyFun()  
  {  
          alert("ok");  
  }Top

4 楼quedan22499()回复于 2004-07-01 13:52:18 得分 0

我的意思是现在执行CountTime()这个函数,当iSeconds=3时,应该执行一次if()后面的  
  语句,即只有累加到tcount等于3.if条件才成立.否则每隔1秒执行一次函数.现在问题时  
  怎么保存住tcount++后的值,1秒后调用CountTime(iSeconds)函数,tcount的值又被设置为  
  0,则此函数将会形成死循环.而且不用clearTimeout怎么清除设置的setTimeout(),急,  
  请教Top

5 楼wanghr100(灰豆宝宝.net(努力工作))回复于 2004-07-01 21:09:42 得分 50

tcount是全局变量,所以,会保存住tcount++后的值.  
  你可以试一下,点"3秒"完了后,然后再点"5秒".5秒响应只用了"2秒".  
  因为tcount是从3开始递增起的.Top

相关问题

  • 菜问题:在线等待
  • 菜 SQL 语句 ,在线等待!!
  • 菜单小问题, 在线等待
  • 在线等待,菜鸟问题。
  • 求助!菜单问题,在线等待!
  • 菜鸟问题!在线等待!
  • 菜鸟问题 在线等待!
  • 超菜问题,在线等待
  • 菜鸟问题(在线等待回答)
  • D菜求救!!在线等待!!

关键词

  • 函数
  • 执行
  • tcount
  • iseconds
  • timeleft
  • 变量
  • 运行
  • 意思
  • 设置
  • time

得分解答快速导航

  • 帖主:quedan22499
  • net_lover
  • wanghr100

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo