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 相关文章推荐
COM中获取JavaScript数组大小的代码
Nov 22 Javascript
document.getElementById为空或不是对象的解决方法
Jan 24 Javascript
JavaScript组合拼接字符串的效率对比测试
Nov 06 Javascript
JavaScript中的索引数组、关联数组和静态数组、动态数组讲解
Nov 08 Javascript
学习jQuey中的return false
Dec 18 Javascript
实例讲解避免javascript冲突的方法
Jan 03 Javascript
JS实现动态表格的添加,修改,删除功能(推荐)
Jun 15 Javascript
javascript运算符——位运算符全面介绍
Jul 14 Javascript
JS canvas绘制五子棋的棋盘
May 28 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
Apr 28 Javascript
小程序实现多个选项卡切换
Jun 19 Javascript
Vue组件间数据传递的方式(3种)
Jul 13 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
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
php5 pdo新改动加载注意事项
2008/09/11 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
CI框架网页缓存简单用法分析
2018/12/26 PHP
JavaScript类型转换方法及需要注意的问题小结(挺全面)
2010/11/11 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
javascript 中的 delete及delete运算符
2015/11/15 Javascript
Nodejs如何复制文件
2016/03/09 NodeJs
jquery插件ContextMenu设置右键菜单
2017/03/13 Javascript
详解Vue 普通对象数据更新与 file 对象数据更新
2017/04/26 Javascript
ReactNative Image组件使用详解
2017/08/07 Javascript
vue移动端轻量级的轮播组件实现代码
2018/07/12 Javascript
使用layui的router来进行传参的实现方法
2019/09/06 Javascript
Python中的Classes和Metaclasses详解
2015/04/02 Python
Django Admin实现上传图片校验功能
2016/03/06 Python
python 开发的三种运行模式详细介绍
2017/01/18 Python
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
python使用RNN实现文本分类
2018/05/24 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
Python3.6.x中内置函数总结及讲解
2019/02/22 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
Python urllib.request对象案例解析
2020/05/11 Python
美国廉价机票预订网站:Cheapfaremart
2018/04/28 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
EJB的基本架构
2016/09/22 面试题
办公室文员工作自我评价
2013/12/01 职场文书
汉语言文学职业规划
2014/02/14 职场文书
四风批评与自我批评范文
2014/10/14 职场文书
小学班长竞选稿
2015/11/20 职场文书
某药房的新员工入职告知书!
2019/07/15 职场文书
小学生一年级(书信作文)
2019/08/13 职场文书
go语言中GOPATH GOROOT的作用和设置方式
2021/05/05 Golang
利用python做数据拟合详情
2021/11/17 Python
MySQL日期时间函数知识汇总
2022/03/17 MySQL
MySQL 数据 data 基本操作
2022/05/04 MySQL