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 判断浏览器类型及版本
Feb 21 Javascript
js禁止小键盘输入数字功能代码
Aug 01 Javascript
js日期时间补零的小例子
Mar 05 Javascript
js setTimeout()函数介绍及应用以倒计时为例
Dec 12 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
Mar 09 Javascript
js使用xml数据载体实现城市省份二级联动效果
Nov 08 Javascript
jQuery实现table表格信息的展开和缩小功能示例
Jul 21 jQuery
微信小程序网络请求封装示例
Jul 24 Javascript
如何为vuex实现带参数的 getter和state.commit
Jan 04 Javascript
微信小程序实现图片翻转效果的实例代码
Sep 20 Javascript
js blob类型url的视频下载问题的解决
Nov 29 Javascript
javascript使用canvas实现饼状图效果
Sep 08 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
图片存储与浏览一例(Linux+Apache+PHP+MySQL)
2006/10/09 PHP
PHP 类商品秒杀计时实现代码
2010/05/05 PHP
php数组函数序列之array_sum() - 计算数组元素值之和
2011/10/29 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
Nigma vs Liquid BO3 第一场2.13
2021/03/10 DOTA
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
2011/10/31 Javascript
js实现ctrl+v粘贴上传图片(兼容chrome、firefox、ie11)
2016/03/09 Javascript
JS实现的点击表头排序功能示例
2017/03/27 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
vue中使用echarts制作圆环图的实例代码
2018/07/27 Javascript
Layui组件Table绑定行点击事件和获取行数据的方法
2018/08/19 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
python Django模板的使用方法(图文)
2013/11/04 Python
linux系统使用python获取内存使用信息脚本分享
2014/01/15 Python
python生成指定长度的随机数密码
2014/01/23 Python
python回调函数的使用方法
2014/01/23 Python
python解决js文件utf-8编码乱码问题(推荐)
2018/05/02 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
Python 加密与解密小结
2018/12/06 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
python deque模块简单使用代码实例
2020/03/12 Python
python安装dlib库报错问题及解决方法
2020/03/16 Python
Python类和实例的属性机制原理详解
2020/03/21 Python
使用Python防止SQL注入攻击的实现示例
2020/05/21 Python
基于Keras 循环训练模型跑数据时内存泄漏的解决方式
2020/06/11 Python
印尼最大的在线购物网站:MatahariMall.com
2016/08/26 全球购物
美国专营婴幼儿用品的购物网站:buybuy BABY
2017/01/01 全球购物
国贸专业个人求职信范文
2014/01/08 职场文书
公立医院改革实施方案
2014/03/14 职场文书
学法用法心得体会(2016推荐篇)
2016/01/21 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python
Python入门之使用pandas分析excel数据
2021/05/12 Python
java多态注意项小结
2021/10/16 Java/Android