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代码
May 09 Javascript
JavaScript的parseInt 取整使用
May 09 Javascript
from表单多个按钮提交用onclick跳转不同action
Apr 24 Javascript
javascript中解析四则运算表达式的算法和示例
Aug 11 Javascript
JavaScript中判断两个字符串是否相等的方法
Jul 07 Javascript
Actionscript与javascript交互实例程序(修改)
Sep 22 Javascript
js实现鼠标左右移动,图片也跟着移动效果
Jan 25 Javascript
js放到head中失效的原因与解决方法
Mar 07 Javascript
VUE DOM加载后执行自定义事件的方法
Sep 07 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
Sep 16 Javascript
countup.js实现数字动态叠加效果
Oct 17 Javascript
vue实现拖拽进度条
Mar 01 Vue.js
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 表单提交大量数据发生丢失的解决方法
2014/03/03 PHP
PHP实现的DES加密解密实例代码
2016/04/06 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
setInterval 和 setTimeout会产生内存溢出
2008/02/15 Javascript
JavaScript使用过程中需要注意的地方和一些基本语法
2010/08/26 Javascript
javascript 另一种图片滚动切换效果思路
2012/04/20 Javascript
jquery的clone方法应用于textarea和select的bug修复
2014/06/26 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
扒一扒JavaScript 预解释
2015/01/28 Javascript
jQuery图片特效插件Revealing实现拉伸放大
2015/04/22 Javascript
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
JS实现仿QQ面板的手风琴效果折叠菜单代码
2015/09/11 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
修改ligerui 默认确认按钮的方法
2016/12/27 Javascript
收集前端面试题之url、href、src
2018/03/22 Javascript
angular中子控制器向父控制器传值的实例
2018/10/08 Javascript
vue踩坑记-在项目中安装依赖模块npm install报错
2019/04/02 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
使用Webpack 搭建 Vue3 开发环境过程详解
2020/07/28 Javascript
Python的pycurl包用法简介
2015/11/13 Python
轻松掌握python设计模式之策略模式
2016/11/18 Python
pandas进行数据的交集与并集方式的数据合并方法
2018/06/27 Python
python中使用paramiko模块并实现远程连接服务器执行上传下载功能
2020/02/29 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
css3 盒模型以及box-sizing属性全面了解
2016/09/20 HTML / CSS
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
Ooni英国官网:披萨烤箱
2020/05/31 全球购物
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
What is EJB
2016/07/22 面试题
小学清明节活动方案
2014/03/08 职场文书
党员群众路线个人整改措施思想汇报
2014/10/12 职场文书
Ruby处理YAML和json数据
2022/04/18 Ruby
vue elementUI批量上传文件
2022/04/26 Vue.js
MySQL 逻辑备份 into outfile
2022/05/15 MySQL