美文网首页
JS 章节② 基础应用(下) : 定时器

JS 章节② 基础应用(下) : 定时器

作者: 壹点微尘 | 来源:发表于2017-06-11 22:39 被阅读35次

    1. Date

    获取 年 月 日 星期 时 分 秒

    <script>
        var date = new Date()
        date.getFullYear(); //2017 年
        date.getMonth(); // 5 注意:月份是个诡异的东西,他是从0开始计算的,故+1才等于正常的月份
        date.getDate(); //11 日
        date.getDay(); //星期 美国的星期是从星期日开始的,故0为星期日,1为星期一,...6为星期六
        date.getHours(); //时
        date.getMinutes(); //分
        date.getSeconds(); //秒
    </script>
    

    2.定时器

    setInterval 间隔型 : 间隔多少ms执行一次
    setTimeout 延时型 : 延时 多少ms执行

    两种定时器的区别:

    setInterval 间隔型 ,可执行多次
    setTimeout 延时型 , 只执行一次

    <script>
            function show() {
                alert('定时器');
            }
    //        setInterval(show,1000); // 一秒执行一次
            setTimeout(show,1000);  //延时一秒执行
    </script>
    
    • 开启定时器 setInterval()
    var btn1 = document.getElementById('btn1');
    var btn2 = document.getElementById('btn2');
    var i = 0;
    var timer = null;
    btn1.onclick = function () {
           //开启定时器
           timer = setInterval(function () {
               i++;
               alert(i);
          },1000);
    }
    
    • 关闭定时器 clearInterval(timer);
    btn2.onclick = function () {
           i = 0;
           clearInterval(timer);
    }
    

    3.截取字符串

    • str[0];不兼容低版本浏览器,如IE7等;
    var a = 'abcdef';
    alert(a[0]);
    
    • str.charAt(0); 兼容各种浏览器
    var a = 'abcdef';
    a.charAt(0); //兼容各种浏览器
    

    4.数字时钟练习

    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>数字时钟</title>
        <style>
            body{
                background-color: black;
                font-size: 50px;
                color: white;
            }
        </style>
        <script>
            window.onload = function () {
                var aImg = document.getElementsByTagName('img');
                function tick() {
                    var date = new Date();
                    //把时间拼接成一个字符串,如:212835;
                    //toDouble()这个函数,是为了把单数转换成双位数,如,9转换成09
                    var sTime = toDouble(date.getHours()) + toDouble(date.getMinutes()) + toDouble(date.getSeconds());
                    for (var i=0;i<aImg.length;i++){
                        aImg[i].src = 'image/'+sTime.charAt(i)+'.png';
                    }
                }
                setInterval(tick,1000);
                tick(); //由于setInterval会延时1000ms执行,所以为了防止每次刷新页面时,页面上显示00:00:00的情况,调用下此函数
            }
            //把获取的时/分/秒 转换成双位数
            function toDouble(n) {
                if (n<10){
                    return '0' + n;
                }else {
                    return '' +n;//前面的'',是为了把数字转换成字符串
                }
            }
        </script>
    </head>
    <body>
    ![](image/0.png)
    ![](image/0.png)
    :
    ![](image/0.png)
    ![](image/0.png)
    :
    ![](image/0.png)
    ![](image/0.png)
    </body>
    </html>
    
    数字时钟

    5.延时提示框

    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>07-延时提示框</title>
        <style>
            div{float: left;margin-left: 20px;}
            #div1{width: 50px;height: 50px;background-color: red;}
            #div2{ width: 200px;height: 200px;background-color: #ccc;display: none;}
        </style>
        <script>
            window.onload = function () {
                var oDiv1 = document.getElementById('div1');
                var oDiv2 = document.getElementById('div2');
                var timer = null;
                oDiv1.onmouseover = function () {
                    oDiv2.style.display = 'block';
                    clearTimeout(timer); //清除延时器
                }
                oDiv1.onmouseout = function () {
                    timer = setTimeout(function () {
                        oDiv2.style.display = 'none';
                    },500);
                }
                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>
    
    简化代码:合并两个相同的mouseover和mouseout
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>07-延时提示框</title>
        <style>
            div{float: left;margin-left: 20px;}
            #div1{width: 50px;height: 50px;background-color: red;}
            #div2{ width: 200px;height: 200px;background-color: #ccc;display: none;}
        </style>
        <script>
            window.onload = function () {
                var oDiv1 = document.getElementById('div1');
                var oDiv2 = document.getElementById('div2');
                var timer = null;
                //简化代码,合并两个相同的mouseover
                oDiv2.onmouseover = oDiv1.onmouseover = function () {
                    oDiv2.style.display = 'block';
                    clearTimeout(timer);
                }
                //简化代码,合并两个相同的mouseout
                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>
    
    延时提示框

    6.无缝滚动

    <html>
    <head>
    <meta charset="utf-8">
    <title>无缝滚动</title>
    <style>
    * {margin:0; padding:0;}
    #div1 {width:712px; height:108px; margin:100px auto; position:relative; background:red; overflow:hidden;}
    #div1 ul {position:absolute; left:0; top:0;}
    #div1 ul li {float:left; width:178px; height:108px; list-style:none;}
    </style>
    <script>
    window.onload=function ()
    {
        var oDiv=document.getElementById('div1');
        var oUl=oDiv.getElementsByTagName('ul')[0];
        var aLi=oUl.getElementsByTagName('li');
        
        var speed=-2;
        
        //oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;
        oUl.innerHTML+=oUl.innerHTML;
        oUl.style.width=aLi[0].offsetWidth*aLi.length+'px';
        //offsetWidth :(width+padding+border) 当前对象的宽度。
        //offsetLeft 当前对象到其上级层左边的距离。
        function move(){
            //往左滚动
            if(oUl.offsetLeft<-oUl.offsetWidth/2)
            {
                oUl.style.left='0';
            }
            //往右滚动
            if(oUl.offsetLeft>0)
            {
                oUl.style.left=-oUl.offsetWidth/2+'px';
            }
            //offsetLeft 距离父元素左侧距离
            oUl.style.left=oUl.offsetLeft+speed+'px';
        }
        //定时器
        var timer=setInterval(move, 30);
        
        oDiv.onmouseover=function ()
        {
            clearInterval(timer);
        };
        
        oDiv.onmouseout=function ()
        {
            timer=setInterval(move, 30);
        };
        //往左滚动
        document.getElementsByTagName('a')[0].onclick=function ()
        {
            speed=-2;
        };
        //往右滚动
        document.getElementsByTagName('a')[1].onclick=function ()
        {
            speed=2;
        };
    };
    </script>
    </head>
    
    <body>
    <a href="javascript:;">向左走</a>
    <a href="javascript:;">向右走</a>
    <div id="div1">
        <ul>
            <li>![](img2/1.jpg)</li>
            <li>![](img2/2.jpg)</li>
            <li>![](img2/3.jpg)</li>
            <li>![](img2/4.jpg)</li>
        </ul>
    </div>
    </body>
    </html>
    
    无缝滚动

    相关文章

      网友评论

          本文标题:JS 章节② 基础应用(下) : 定时器

          本文链接:https://www.haomeiwen.com/subject/caxkqxtx.html