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 相关文章推荐
js跟随滚动条滚动浮动代码
Dec 31 Javascript
一个简单的jQuery插件制作 学习过程及实例
Apr 25 Javascript
基于jQuery的自动完成插件
Feb 03 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
Oct 11 Javascript
js弹出模式对话框,并接收回传值的方法
Mar 12 Javascript
html的DOM中document对象images集合用法实例
Jan 21 Javascript
js实现兼容IE和FF的上下层的移动
May 04 Javascript
javascript中闭包(Closure)详解
Jan 06 Javascript
Angular2数据绑定详解
Apr 18 Javascript
如何让node运行es6模块文件及其原理详解
Dec 11 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
Nov 18 Javascript
使用Vue实现一个树组件的示例
Nov 06 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文本数据库的搜索方法
2006/10/09 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
2010/06/03 PHP
yii2简单使用less代替css示例
2017/03/10 PHP
php生成word并下载代码实例
2019/03/15 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
JS解密入门 最终变量劫持
2008/06/25 Javascript
jquery 实现上下滚动效果示例代码
2013/08/09 Javascript
jQuery实现图片放大预览实现原理及代码
2013/09/12 Javascript
js 设置缓存及获取设置的缓存
2014/05/08 Javascript
document.write的几点使用心得
2014/05/14 Javascript
JS实现网页每隔3秒弹出一次对话框的方法
2015/11/09 Javascript
JS简单实现浮动窗口效果示例
2016/09/07 Javascript
AngularJS入门教程之多视图切换用法示例
2016/11/02 Javascript
JavaScript订单操作小程序完整版
2017/06/23 Javascript
Vue2.0利用vue-resource上传文件到七牛的实例代码
2017/07/28 Javascript
微信小程序中button组件的边框设置的实例详解
2017/09/27 Javascript
windows下create-react-app 升级至3.3.1版本踩坑记
2020/02/17 Javascript
Vue 监听元素前后变化值实例
2020/07/29 Javascript
python 实现登录网页的操作方法
2018/05/11 Python
python 保存float类型的小数的位数方法
2018/10/17 Python
详解mac python+selenium+Chrome 简单案例
2019/11/08 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
2020/06/18 Python
html5中canvas学习笔记1-画板的尺寸与实际显示尺寸
2013/01/06 HTML / CSS
香港莎莎官网Sasa.com:亚洲著名国际化妆品商城
2019/11/10 全球购物
雷蛇美国官网:Razer
2020/04/03 全球购物
PatPat香港:婴童服饰和亲子全家装在线购物
2020/09/27 全球购物
毕业求职自荐信格式是什么
2013/11/19 职场文书
服装设计专业自荐信
2014/06/17 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
高一地理教学工作总结
2015/08/12 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
2019职场实习报告该怎么写?
2019/07/01 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书
Windows Server 2016 配置 IIS 的详细步骤
2022/04/28 Servers
Python 文字识别
2022/05/11 Python