美文网首页
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