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 相关文章推荐
javascript操作cookie的文章(设置,删除cookies)
Apr 01 Javascript
Jquery中显示隐藏的实现代码分析
Jul 26 Javascript
利用js实现前台动态添加文本框,后台获取文本框内容(示例代码)
Nov 25 Javascript
超简单JS二级、多级联动的简单实例
Feb 18 Javascript
javascript设置连续两次点击按钮时间间隔的方法
Oct 28 Javascript
javascript bom是什么及bom和dom的区别
Nov 26 Javascript
JS简单实现String转Date的方法
Mar 02 Javascript
jquery分页插件jquery.pagination.js实现无刷新分页
Apr 01 Javascript
JavaScript 判断一个对象{}是否为空对象的简单方法
Oct 09 Javascript
详解Vue路由钩子及应用场景(小结)
Nov 07 Javascript
如何在Angular应用中创建包含组件方法示例
Mar 23 Javascript
bootstrap实现tab选项卡切换
Aug 09 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校验表单检测字段是否为空的方法
2015/03/20 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
学习YUI.Ext第五日--做拖放Darg&amp;Drop
2007/03/10 Javascript
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
禁止js文件缓存的代码
2010/04/09 Javascript
javascript的数组和常用函数详解
2014/05/09 Javascript
jQuery的one()方法用法实例
2015/01/19 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
关于JavaScript 原型链的一点个人理解
2016/07/31 Javascript
ECMAScript6--解构
2017/03/30 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
通过seajs实现JavaScript的模块开发及按模块加载
2019/06/06 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
Vue.js的模板语法详解
2020/02/16 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
Vue实现附件上传功能
2020/05/28 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
2020/08/10 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
[03:48]显微镜下的DOTA2第四期——TP动作
2014/06/20 DOTA
[05:36]DOTA2 2015国际邀请赛中国区预选赛第四日TOP10
2015/05/29 DOTA
python调用java的Webservice示例
2014/03/10 Python
Python中的pass语句使用方法讲解
2015/05/14 Python
pandas对dataFrame中某一个列的数据进行处理的方法
2019/07/08 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
python的range和linspace使用详解
2019/11/27 Python
python使用正则表达式(Regular Expression)方法超详细
2019/12/30 Python
python 实现线程之间的通信示例
2020/02/14 Python
CSS3弹性布局内容对齐(justify-content)属性使用详解
2017/07/31 HTML / CSS
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
中科创达面试题
2016/12/28 面试题
医学院学生求职简历的自我评价
2013/10/24 职场文书
2015年教师节慰问信
2015/03/23 职场文书
警告通知
2015/04/25 职场文书
社区服务理念口号
2015/12/25 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers