JS定时器用法分析【时钟与菜单中的应用】


Posted in Javascript onDecember 21, 2016

本文实例分析了JS定时器用法。分享给大家供大家参考,具体如下:

开启定时器:

setInterval 间隔型    //一旦启动就不会停,重复执行
setTimeout 延迟型   //只执行一次

停止定时器:

clearInterval
clearTimeout

关闭定时器如果只是clearInterval()那会关掉所有的定时器,有时我们只需要关掉一个而已,所以要定义一个变量来存放定时器

var timer=null;
btn1.onclick=function(){
  timer=setInterval(函数名,1000);
};
btn2.onclick=function(){
  clearInterval(timer);
};

例子1

JS定时器用法分析【时钟与菜单中的应用】

时刻变化的时钟,且数字是由图片代替的

思路:

1.创建Date(日期)对象,获取系统时间(注:获取时间如果是一位数,需要一个转换成二位数的函数)

2.将获得的系统时间每一位数字赋给图片地址的数字编号(charAt()方法,返回字符串指定位置的字符,所以需要一个for循环返回时分秒六位数字)

3.需要一个定时器让它自动更新时间

function toDouble(num){ //一位数转换成二位数
  if(num<10){
    return '0'+num;
  }else{
    return ''+num;
  }
}
window.onload=function(){
  var oimg=document.getElementsByTagName('img');
  var i;
  function updatetime(){
    var odate=new Date();
    var str=toDouble(odate.getHours())+toDouble(odate.getMinutes())+toDouble(odate.getSeconds());
    for(i=0;i<oimg.length;i++){
      oimg[i].src='images/'+str.charAt(i)+'.png';
    }
  }
  setInterval(updatetime,1000); //定时器里面应该放的是方法,而不是直接执行函数
  updatetime(); //不执行下函数,会出现刚刷新页面第一秒,时间是00时00分00秒
}

例子2

二级菜单

JS定时器用法分析【时钟与菜单中的应用】

一级菜单和二级菜单间有缝隙,如果仅仅是移入一级菜单时二级显示,移除时隐藏,那么移到缝隙间还是会显示不出来(或者说来不及进入二级菜单,二级菜单就没了),所以需要一个定时器,在离开一级菜单时,不让二级马上消失,而是缓慢隐藏,然后在进入二级菜单时,清除这个定时器,他就不会消失了,另外离开二级菜单时,还是要让它消失,不然会永远存在

window.onload=function(){
  var box1=document.getElementById('box1');
  var box2=document.getElementById('box2');
  var timer=null;
  box1.onmouseover=function(){
    box2.style.display="block";
    clearTimeout(timer);  //不清除定时器,离开二级菜单进入一级菜单时,二级菜单也会隐藏
  };
  box1.onmouseout=function(){
    timer=setTimeout(function(){
      box2.style.display="none";
    },300);
  };
  box2.onmouseover=function(){
    clearTimeout(timer);
  };
  box2.onmouseout=function(){  //如果离开二级菜单,让他瞬间消失,IE7下移动到一级菜单时,二级菜单会闪烁
    timer=setTimeout(function(){
      box2.style.display="none";
    },300);
  };
};

简化下代码

window.onload=function(){
  var box1=document.getElementById('box1');
  var box2=document.getElementById('box2');
  var timer=null;
  box1.onmouseover=box2.onmouseover=function show(){
    box2.style.display="block";
    clearTimeout(timer);
  };
  box1.onmouseout=box2.onmouseout=function hide(){
    timer=setTimeout(function(){
      box2.style.display="none";
    },300);
  };
};

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
基于Jquery的将DropDownlist的选中值赋给label的实现代码
May 06 Javascript
JavaScript栏目列表隐藏/显示简单实现
Apr 03 Javascript
javascript复制粘贴与clipboardData的使用
Oct 16 Javascript
jquery中append()与appendto()用法分析
Nov 14 Javascript
JQuery实现动态适时改变字体颜色的方法
Mar 10 Javascript
js选择器全面解析
Jun 27 Javascript
微信开发 js实现tabs选项卡效果
Oct 28 Javascript
jquery心形点赞关注效果的简单实现
Nov 14 Javascript
JS实现的自动打字效果示例
Mar 10 Javascript
JavaScript实现简单的星星评分效果
May 18 Javascript
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
Jun 06 jQuery
vue实现codemirror代码编辑器中的SQL代码格式化功能
Aug 27 Javascript
vue.js实现仿原生ios时间选择组件实例代码
Dec 21 #Javascript
详解jQuery的表单验证插件--Validation
Dec 21 #Javascript
JS无缝滚动效果实现方法分析
Dec 21 #Javascript
简单实现JS计算器功能
Dec 21 #Javascript
jQuery实现立体式数字滚动条增加效果
Dec 21 #Javascript
Bootstrap Search Suggest使用例子
Dec 21 #Javascript
简单实现Bootstrap标签页
Aug 09 #Javascript
You might like
PHP编程中字符串处理的5个技巧小结
2007/11/13 PHP
php强制下载类型的实现代码
2011/04/21 PHP
php判断数组元素中是否存在某个字符串的方法
2014/06/14 PHP
ThinkPHP多语言支持与多模板支持概述
2014/08/22 PHP
php通过sort()函数给数组排序的方法
2015/03/18 PHP
php实现网站留言板功能
2015/11/04 PHP
thinkphp 字母函数详解T/I/N/D/M/A/R/U
2017/04/03 PHP
Yii2框架实现登录、退出及自动登录功能的方法详解
2017/10/24 PHP
基于Web标准的UI组件 — 树状菜单(2)
2006/09/18 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
node.js中的url.resolve方法使用说明
2014/12/10 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
jQuery实现图片局部放大镜效果
2016/03/17 Javascript
jQuery EasyUI 右键菜单--关闭标签/选项卡的简单实例
2016/10/10 Javascript
基于rem的移动端响应式适配方案(详解)
2017/07/07 Javascript
angular使用bootstrap方法手动启动的实例代码
2017/07/18 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
vue中的.$mount('#app')手动挂载操作
2020/09/02 Javascript
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
python中的colorlog库使用详解
2019/07/05 Python
Canvas 文字碰撞检测并抽稀的方法
2019/05/27 HTML / CSS
h5调用摄像头的实现方法
2016/06/01 HTML / CSS
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
咖啡厅创业计划书范本
2014/01/22 职场文书
元旦联欢会主持词
2014/03/26 职场文书
请假条的格式
2014/04/11 职场文书
服装发布会策划方案
2014/05/22 职场文书
防汛工作情况汇报
2014/10/28 职场文书
大学学生会辞职信
2015/05/13 职场文书
《风娃娃》教学反思
2016/02/18 职场文书
php随机生成验证码,php随机生成数字,php随机生成数字加字母!
2021/04/01 PHP
nginx配置虚拟主机的详细步骤
2021/07/21 Servers