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


Posted in Javascript onJanuary 28, 2016

本文实例讲解了JS中setTimeout()的用法,分享给大家供大家参考,具体内容如下

效果图:

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

具体代码:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript">
var timer; //全局变量
var i=0; //变量初始化,全局变量
//定义函数:开始计时
function start()
{
 //获取id=result的对象
 var obj = document.getElementById("result");
 var str = "该程序已经运行了"+i+"秒!";
 i++; //展开 i=i+1
 //将变量str的内容写入到id=result中去
 obj.value = str; //给表单元素加内容,一般用value属性
      //除表单外的其它标记用JS写内容,使用innerHTML
 
 //设置延时器
 timer = window.setTimeout("start()",10);
}
//定义函数:停止计时
function stop()
{
 window.clearTimeout(timer);
}

</script>
</head>

<body>
<input type="button" id="result" value="该程序已经运行了0秒!" /><br />
<input type="button" onclick="start()" value="开始" />
<input type="button" onclick="stop()" value="停止" />
</body>
</html>

下面来说一说具体的用法:

1、参数
code (必需):(本意是代码的意思)要调用的函数后要执行的 JavaScript 代码串。
millisec(必需):在执行代码前需等待的毫秒数。
提示:
setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。
2、实例

<html>
<head>
<scripttype="text/javascript">
functiontimedMsg()
{
vart=
setTimeout("
alert('5seconds!')",5000)
}
</script>
</head>
<body>
<form>
<inputtype="button"
value="Displaytimedalertbox!"onClick="timedMsg()">
</form>
<p>Clickonthebuttonabove.Analertboxwillbedisplayedafter5seconds.</p>
</body>
</html>

3、实例(2)

functionclockon(bgclock){
varnow=newDate();
varyear=now.getFullYear();
varmonth=now.getMonth();
vardate=now.getDate();
varday=now.getDay();
varhour=now.getHours();
varminu=now.getMinutes();
varsec=now.getSeconds();
varweek;
 
month=month+1;
if(month<10)month="0"+month;
if(date<10)date="0"+date;
if(hour<10)hour="0"+hour;
if(minu<10)minu="0"+minu;
if(sec<10)sec="0"+sec;
/*vararr_week=newArray("星期日","星期一","星期二","星期三","星期四","星期五","星期六");
week=arr_week[day];
*/
switch(day){
case1:week="星期一";break;
case2:week="星期二";break;
case3:week="星期三";break;
case4:week="星期四";break;
case5:week="星期五";break;
case6:week="星期六";break;
default:week="星期日";break;
}
vartime="";
time=year+"年"+month+"月"+date+"日"+week+""+hour+":"+minu+":"+sec;
if(document.all){
bgclock.innerHTML="系统公告:["+time+"]"
}
vartimer=
setTimeout("clockon(bgclock)",200);
}

4、执行

我们常常会遇到一种情况,setTimeout(code,millisec)中code包含形参,
例如:我们需要在1秒后向用户提示的信息存储于变量msg中,

var msg='1shaspassed!';

此时不论是直接执行

setTimeout(
alert(msg),1000);//alert(msg)会被立即执行

还是

setTimeout(“alert(msg)”,1000);//系统报错msgisnotdefined(chrome)

都不能达到预期的目的,因为定时器会努力地将code转化为一个function对象,第一个错例里定时器立即执行code希求返回一个function对象,结果扑了空;第二个虽然成功封装出function对象,但是定时器在msg的可见域外执行code,所以msg得不到正确的传递
推荐的解决办法是使用匿名函数回调

var msg='1shaspassed!';
setTimeout(function(){
alert(msg);
},1000);

第一个参数传递了一个会调用所需语句的function对象,这样就解决了code带参的问题。

以上就是本文的全部内容,希望对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
extjs 分页使用jsp传递数据示例
Jul 29 Javascript
javascript比较两个日期的先后示例代码
Dec 31 Javascript
jQuery获取剪贴板内容的方法
Jun 16 Javascript
Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)
Jun 22 Javascript
JS中对Cookie的操作详解
Aug 05 Javascript
Vue.js每天必学之内部响应式原理探究
Sep 07 Javascript
浅谈angularjs $http提交数据探索
Jan 20 Javascript
完美实现js拖拽效果 return false用法详解
Jul 28 Javascript
微信小程序实现星星评价效果
Nov 02 Javascript
VueJs里利用CryptoJs实现加密及解密的方法示例
Apr 29 Javascript
小程序中this.setData的使用和注意事项
Aug 28 Javascript
TypeScript之调用栈的实现
Dec 31 Javascript
jQuery+canvas实现的球体平抛及颜色动态变换效果
Jan 28 #Javascript
jQuery+canvas实现简单的球体斜抛及颜色动态变换效果
Jan 28 #Javascript
基于javascript实现动态显示当前系统时间
Jan 28 #Javascript
jQuery实现div随意拖动的实例代码(通用代码)
Jan 28 #Javascript
jQuery+css实现炫目的动态块漂移效果
Jan 28 #Javascript
使用node+vue.js实现SPA应用
Jan 28 #Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
Jan 28 #Javascript
You might like
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
php实现json编码的方法
2015/07/30 PHP
PHP中命名空间的使用例子
2019/03/22 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
jQuery.extend()、jQuery.fn.extend()扩展方法示例详解
2014/05/08 Javascript
Ext4.2的Ext.grid.plugin.RowExpander无法触发事件解决办法
2014/08/15 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
2015/05/06 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
JavaScript实战之菜单特效
2016/08/16 Javascript
js仿微信语音播放实现思路
2016/12/12 Javascript
使用smartupload组件实现jsp+jdbc上传下载文件实例解析
2017/01/05 Javascript
vue2.0 keep-alive最佳实践
2017/07/06 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
AngularJS实现的根据数量与单价计算总价功能示例
2017/12/26 Javascript
使用vuex缓存数据并优化自己的vuex-cache
2018/05/30 Javascript
vue+element-ui实现表格编辑的三种实现方式
2018/10/31 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
vue读取本地的excel文件并显示在网页上方法示例
2019/05/29 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
vue实现验证用户名是否可用
2021/01/20 Vue.js
[52:07]完美世界DOTA2联赛PWL S3 LBZS vs access 第二场 12.10
2020/12/13 DOTA
python同时给两个收件人发送邮件的方法
2015/04/30 Python
Python操作Oracle数据库的简单方法和封装类实例
2018/05/07 Python
python实现批量修改图片格式和尺寸
2018/06/07 Python
Pytorch数据拼接与拆分操作实现图解
2020/04/30 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
python绘制高斯曲线
2021/02/19 Python
很酷的小工具和电子产品商城:GearBest
2016/11/19 全球购物
就业协议书盖章的注意事项
2014/09/28 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
离婚被告答辩状
2015/05/22 职场文书
2016年万圣节家长开放日活动总结
2016/04/05 职场文书
怎么用Python识别手势数字
2021/06/07 Python
Vue Element plus使用方法梳理
2022/12/24 Vue.js