【JS学习】定时器

一、定时器的作用

(1)开启定时器

  setInterval 间隔型

  setTimeout 延时型

两种定时器的区别

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>定时器</title>
<script>
function show()
{
    alert(‘a‘);
    };
//setInterval(show,1000);//每隔1000毫秒执行一次show函数
setTimeout(show,1000);//延迟1000毫秒之后执行show函数
</script>

</head>

<body>
</body>
</html>

(2)停止定时器

  clearInterval

  clearTimeout

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>定时器的开启与关闭</title>
<script>
window.onload = function ()
{
    var oBtn1=document.getElementById(‘btn1‘);
    var oBtn2=document.getElementById(‘btn2‘);
    var timer=null;
    
    oBtn1.onclick = function ()
    {
        timer=setInterval(function()
        {
            alert(‘a‘);
            },1000);
        };
    
    oBtn2.onclick = function ()
    {
        clearInterval(timer);
        };
    };
</script>
</head>

<body>
<input id="btn1" type="button" value="开启" />
<input id="btn2" type="button" value="关闭" />
</body>
</html>

二、数码时钟

(1)效果思路

(2)获取系统时间

  Data对象

  gerHours、GetMinutes、getSeconds

(3)显示系统时间

  字符串连接

  空位补零

(4)设置图片路径

charAt方法

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>数码时钟(兼容模式)</title>
<script>
//但是不兼容IE7
function toDou(n)
{
    if(n<10)
    {
        return ‘0‘+n;//第一位加上0,保证取出来的时间数字一直是2位数的字符串,比如01
        }
    else
    {
        return ‘‘+n;//为什么要加空字符串‘‘,是为了让返回的2位数字也是以字符串的形式返回的
        }
    };

window.onload = function ()
{
    var aImg=document.getElementsByTagName(‘img‘);
    //var str=‘013221‘;//这个时间是写死的
    //开启定时器,每过一秒钟更新一次图片
    function tick()
    {
        var oDate=new Date();
    
        var str=toDou(oDate.getHours())+toDou(oDate.getMinutes())+toDou(oDate.getSeconds());
    
        for(var i=0;i<aImg.length;i++)
        {
            aImg[i].src=‘img/‘+str.charAt(i)+‘.png‘;//使用charAt(i)使各种浏览器保持兼容!
            }
    };
    setInterval(tick,1000);
    tick();//将tick()函数先在onload里面执行一遍,这样刚打开页面时不会有全是0的一瞬间延迟
    };
</script>
</head>

<body style="background:black; color:white; font-size:50px;">
<img src="img/0.png" />
<img src="img/0.png" />
:
<img src="img/0.png" />
<img src="img/0.png" />
:
<img src="img/0.png" />
<img src="img/0.png" />
</body>
</html>

三、Date对象的其他方法

年getFullYear

月getMonth()

日getDate()

星期getDay()

四、延时提示框

(1)效果演示

(2)原来的方法

移入显示,移出隐藏

(3)移出延时隐藏

移入下面的Div后,还是隐藏了

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>延时提示框</title>
<style>
div{
    margin:10px;
    float:left;
    }
#div1{
    width:50px;
    height:50px;
    background:red;
    }
#div2{
    width:250px;
    height:180px;
    background:#CCC;
    display:none;
    }
</style>
<script>
window.onload = function ()
{
    var oDiv1=document.getElementById(‘div1‘);
    var oDiv2=document.getElementById(‘div2‘);
    var timer=null;
    
    oDiv1.onmouseover=function()
    {
        clearTimeout(timer);//如果不事先清除div2的timeout这个定时炸弹,当鼠标从div2移入div1时,div2会消失掉
        oDiv2.style.display=‘block‘;
        };
    oDiv1.onmouseout=function()
    {
        timer=setTimeout(function()
        {
        oDiv2.style.display=‘none‘;            
            },500);
        };
    //当鼠标移到Div2的时候,先把定时器关闭    
    oDiv2.onmouseover=function()
    {
        clearTimeout(timer);
        };
        
    oDiv2.onmouseout=function()
    {
        timer=setTimeout(function()
        {
        oDiv2.style.display=‘none‘;        
            },500);

};
    };
    
</script>
</head>

<body>
<div id="div1">

</div>
<div id="div2">

</div>
</body>
</html>

(4)简化代码

合并两个相同的mouseover和mouseout

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>延时提示框合并代码</title>
<style>
div{
    margin:10px;
    float:left;
    }
#div1{
    width:50px;
    height:50px;
    background:red;
    }
#div2{
    width:250px;
    height:180px;
    background:#CCC;
    display:none;
    }
</style>
<script>
window.onload = function ()
{
    var oDiv1=document.getElementById(‘div1‘);
    var oDiv2=document.getElementById(‘div2‘);
    var timer=null;
    
    oDiv2.onmouseover=oDiv1.onmouseover=function()
    {
        clearTimeout(timer);//如果不事先清除div2的timeout这个定时炸弹,当鼠标从div2移入div1时,div2会消失掉
        oDiv2.style.display=‘block‘;
        };
    oDiv2.onmouseout=oDiv1.onmouseout=function()
    {
        timer=setTimeout(function()
        {
        oDiv2.style.display=‘none‘;            
            },500);
        };
    };
    
</script>
</head>

<body>
<div id="div1">

</div>
<div id="div2">

</div>
</body>
</html>

时间: 2024-10-12 00:02:00

【JS学习】定时器的相关文章

Vue.js学习笔记:在元素 和 template 中使用 v-if 指令

f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title></title> <script src="https://cdn.bootcss.com/vue/2.2.

NODE.JS学习的常见误区及四大名著

NODE.JS学习的常见误区及四大名著 前段时间由于不满于社区里很多人对于NODE.JS的种种误解而写了一篇文章名为: NODE.JS之我见:http://www.cnblogs.com/pugang/p/4374681.html 收到了很多兄弟的热情回复和激烈讨论,在此深表感谢,有的朋友觉得我写的比较粗犷,没有给出具体的性能分析和对比,在此我想说的是其实好多东西的性能分析,根本就不用我写到博客上,其一是如果我写了,很多人同样会觉得不客观,不中立,其二是网上很多中立的机构,随便搜索一下,对比太多

Ext JS学习第五天 Ext_window组件(一)

此文来记录学习笔记 •第一个组件:Ext.window.Window.对于组件,也就是Ext最吸引开发者的地方,那么我们要真正的使用Ext的组件,首先必须学会阅读API文档. –xtype:组件的别名 –Hierarchy 层次结构 –Inherited mixins 混入的类 –Requires 该组件需要使用的类 –configs:组件的配置信息 –properties:组件的属性 –methods:组件的方法 –events:组件的事件 •window组件常用属性和方法讲解: •confi

JavaScript模块加载框架sea.js 学习一

简单总结sea.js 学习 文件目录结构 /sea/sea.js      下载地址  http://seajs.org/docs/#downloads /sea/jquery-sea.js   下载地址 http://jquery.com/download/ /sea/sea_config.js /sea/home.jsdata.js /sea/data.js 1.html页面代码文件 <style> .ch{height:200px;width:200px;background:#ccc;

[Pro Angular.JS]学习笔记1.1:设置开发环境

可以使用yeoman.io,很方便.我已经写了一篇随笔,介绍如何使用.这里也有一篇介绍的文章:http://www.cnblogs.com/JoannaQ/p/3756281.html 代码编辑器,在Mac下用了一下WebStorm,太恶心了.另外发现书的作者使用的开发环境是Windows + VS Express 2013,为了方便学习,我也使用VS Express 2013 Update2.VS2013用起来蛮舒服的,把WebStorm比得跟驼屎一样.也许是因为我没用习惯吧. 1.安装Nod

【转】Backbone.js学习笔记(二)细说MVC

文章转自: http://segmentfault.com/a/1190000002666658 对于初学backbone.js的同学可以先参考我这篇文章:Backbone.js学习笔记(一) Backbone源码结构 1: (function() { 2: Backbone.Events // 自定义事件 3: Backbone.Model // 模型构造函数和原型扩展 4: Backbone.Collection // 集合构造函数和原型扩展 5: Backbone.Router // 路由

Ext JS学习第五天 Ext_window组件(二)

此文用来记录学习笔记 •上一讲我们已经学过了window的使用,那么在这将中,我们将结合然后把Ext中需要注意的地方,以及组建的使用给予介绍.indow做几个Web开发的经典示例. •ExtWeb实战300例: –例1:点击按钮打开一个window,window重复创建的问题 •重点分析:这个问题是初学者经常会犯错的地方,一般来说简单的代码不会产生此问题,但是如果以后代码复杂以后,这个问题如果发生调试起来会非常麻烦!! 附上栗子代码 1 Ext.onReady(function () { 2 3

Ext JS学习第三天 我们所熟悉的javascript(二)

•javascript之函数 •对于Ext开发者,我还是希望你能对javascript原生的东西非常了解.甚至熟练掌握运用.那么函数,无疑是非常重要的概念.首先在前面一讲,我们知道了函数也是一种数据类型,创建函数一共有三种方式.每种方式他们都会有区别,分别为: –function语句形式 –函数直接量形式 –构造函数形式 •函数中的arguments对象 –argument的作用一:接受函数的实际参数 –argument的作用二:用于做递归操作 栗子代码 1 //Function 函数 2 //

Ext JS学习第二天 我们所熟悉的javascript(一)

此文用来记录学习笔记: •ExtJS是一个强大的javascript框架,如果想真正的掌握ExtJS,那么我们必须要对javascript有一定的认识,所以很有必要静下心来,抱着一本javascript书籍,恶补一番.推荐书籍<javascript高级程序设计>.<javascript设计模式>. •在这里我们学习一下可能你从未接触过的javascript,这些javascript知识是我们要学好ExtJS这个框架非常有必要的.必备的知识.我们需要掌握的内容有: –javascri

Angular JS 学习笔记

特定领域语言 编译器:遍历DOM来查找和它相关的属性, 分为编译和链接两个阶段, 指令:当关联的HTML结构进入编译阶段时应该执行的操作,可以写在名称里,属性里,css类名里:本质上是函数 稳定的DOM:绑定了数据模型的DOM元素的实例不会在绑定的生命周期发生改变 作用域:用来检测模型的改变和为表达式提供执行上下文的 AngularJS 和其它模板系统不同,它使用的是DOM而不是字符串 指令: 由某个属性.元素名称.css类名出现而导致的行为,或者说是DOM的变化 Filter过滤器:扮演着数据