1. 程式人生 > >setInterval定時器設定開關

setInterval定時器設定開關

box 方案 pan speed style current 給定 dst interval

今天簡單寫一個小案例:點擊按鈕,讓div“走”起來。主要是為了說明給定時器設定開關時需要註意的幾個問題。需求是:當點擊按鈕,讓div向右一直移動,當移動到500像素時,停下來。好了那麽簡單的布局代碼看一下:

css代碼
<style>
#box{width:50px;height:50px;background:#ff6b0e;position: absolute;top:50px;left:50px;}
</style>
html代碼
<body>
<input id="btn" type="button" value="按鈕"/>
<div id="box"
></div> </body>

那麽簡單的js效果是這樣的:

<script>
    //兼容不同瀏覽器獲取行間樣式
    function getStyle ( obj, attr ) {
        return obj.currentStyle?obj.currentStyle[attr] : getComputedStyle( obj )[attr];
    }

    window.onload=function(){
        var aBtn=document.getElementById("btn");
        var
oBox=document.getElementById("box"); var timer=null; aBtn.onclick=function(){ clearInterval(timer);//這裏先要清除一下定時器是為了防止一直點擊按鈕,div一直加速 //開啟定時器,假定讓其等於500的時候,停止下來 timer=setInterval(function(){ var speed=parseInt(getStyle(oBox,"left"))+18;
if( speed > 500){//所以這裏一定要讓其要大於500的時候等於500,這樣的話在給div賦值 speed = 500 } oBox.style.left= speed +"px"; //這裏不能是大於500,否則有可能結果是508停下了,就不是要求的500 if( speed == 500){ clearInterval(timer) } },50) }; }; </script>

這裏需要註意的幾個問題是:

第一,就是獲取div的樣式一定要用到getStyle,而它存在一定兼容性,其解決方案上面案例有寫到,這是通用的簡單寫法;

第二,就是若是讓div在等於一定值的情況下停下來的話,一定要想清楚它移動的單位長度能否被這個值除盡,若不能,那麽就要先判斷當其大於這個值的時候要它先等於設定的這個值,然後再去賦值,給加條件讓其停止。

好了,上面的例子備註也很清楚了,當然這只是一個很簡單的小例子,若遇到類似的問題,一定要想到這些細節!希望對大家有幫助!今天就到這裏!

setInterval定時器設定開關