日期:2014-05-16  浏览次数:20478 次

setInterval的使用
为了实现颜色的交替变化,我调用了两次setInterval,想让每次颜色变化的时间间隔都为80ms。但按照我的写法,每次的时间间隔会慢慢增加。请问各大侠,要如何修改呢?T T
//闪电timer
    function startLightning(){
        timer1 = setInterval('lightToGray()', 4920);
        timer2 = setInterval('lightToChange()', 5000);
        //clearTimeout(timer1);
        //clearInterval(timer2);
    }

//闪电变灰
    function lightToGray(){
        //随机获取div的行列数,以随机选择div进行变色
        randomR = Math.floor(Math.random()*maxR);
        randomC = Math.floor(Math.random()*maxC);
        beforeColor = document.getElementById("r"+randomR+"c"+randomC).style.backgroundColor;
        document.getElementById("r"+randomR+"c"+randomC).style.backgroundColor = "dimgray";
    }

//闪电变色
    function lightToChange(){
        if(beforeColor == "blue"||beforeColor == "yellow"||beforeColor == "red"||beforeColor == "black"){
            document.getElementById("r"+randomR+"c"+randomC).style.backgroundColor = beforeColor;
        }
        else{
            document.getElementById("r"+randomR+"c"+randomC).style.backgroundColor = "yellow";
        }
            
    }

------解决方案--------------------

    var flag=true;
//闪电timer
    function startLightning(){
        timer1 = setInterval(function(){
             if(flag)
             {
                lightToGray();
             }else{
                lightToChange()
             }
             flag=!flag;
         }, 800);
    }

------解决方案--------------------
function startLightning(){
    timer1 = setTimeout('lightToGray()', 4920);
    timer2 = setTimeout('lightToChange()', 5000);
    //clearTimeout(timer1);
    //clearInterval(timer2);
}

//闪电变灰
function lightToGray(){
    //随机获取div的行列数,以随机选择div进行变色
    randomR = Math.floor(Math.random()*maxR);