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 相关文章推荐
AJAX架构之Dojo篇
Apr 10 Javascript
jQuery each()小议
Mar 18 Javascript
jQuery源码中的chunker 正则过滤符分析
Jul 31 Javascript
jQuery contains过滤器实现精确匹配使用方法
Apr 12 Javascript
JavaScript将当前时间转换成UTC标准时间的方法
Apr 06 Javascript
jQuery+HTML5实现图片上传前预览效果
Aug 20 Javascript
javascript拖拽效果延伸学习
Apr 04 Javascript
jQuery实现定位滚动条位置
Aug 05 Javascript
详解vue跨组件通信的几种方法
Jun 15 Javascript
世界上最短的数字判断js代码
Sep 09 Javascript
js图数据结构处理 迪杰斯特拉算法代码实例
Sep 11 Javascript
JS判断数组是否包含某元素实现方法汇总
Jun 24 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
基于OpenCV的PHP图像人脸识别技术
2009/10/11 PHP
十个PHP高级应用技巧果断收藏
2015/09/25 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
解读IE和firefox下JScript和HREF的执行顺序
2008/01/12 Javascript
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
JavaScript 面向对象之命名空间
2010/05/04 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
JS实现模拟风力的雪花飘落效果
2015/05/13 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
javascript实现五星评分功能
2015/11/10 Javascript
简单实现JS对dom操作封装
2015/12/02 Javascript
Angular2生命周期钩子函数的详细介绍
2017/07/10 Javascript
react在安卓中输入框被手机键盘遮挡问题的解决方法
2018/09/03 Javascript
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
python字符串过滤性能比较5种方法
2017/06/22 Python
用Python实现KNN分类算法
2017/12/22 Python
python检测IP地址变化并触发事件
2018/12/26 Python
在python 中实现运行多条shell命令
2019/01/07 Python
Python数据类型之List列表实例详解
2019/05/08 Python
python使用python-pptx删除ppt某页实例
2020/02/14 Python
python 已知平行四边形三个点,求第四个点的案例
2020/04/12 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
分享30个新鲜的CSS3打造的精美绚丽效果(附演示下载)
2012/12/28 HTML / CSS
微信浏览器取消缓存的方法
2015/03/28 HTML / CSS
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
介绍一下你对SOA的认识
2016/04/24 面试题
建筑工程专业学生的自我评价
2013/12/25 职场文书
关于迟到的检讨书
2015/05/06 职场文书
周一早安温馨问候祝福语!
2019/07/15 职场文书
Mysql数据库命令大全
2021/05/26 MySQL
用Python监控你的朋友都在浏览哪些网站?
2021/05/27 Python
Android Flutter实现3D动画效果示例详解
2022/04/07 Java/Android
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers