SetInterval无法在Firefox中查看功能

时间:2012-11-28 11:33:14

标签: javascript firefox setinterval

我对JavaScript很陌生,所以如果这是一个愚蠢的问题,请原谅我。我使用下面的代码将图像滑动到屏幕上,另外两个图像一个接一个地出现。这适用于Chrome和IE 7-9。不幸的是,在Firefox上我得到一个错误说:

  

move未定义[mover = setInterval(move,1000); ]

我的代码:

//define variables
var mover = 0
var bubble1move = 0
var bubble2move = 0


if(mover != 0)
{//interval is finished
    function move ()
    {   
        console.log("moving")
        clearInterval(mover)
        var moving_img = document.getElementById("i_sliding_image")
        var left = 0
        function frame() 
        {       
            left -= 2  // update parameters
            moving_img.style.left = left + 'px'// show frame
            if (left == -274) // check finish condition
            {
                clearInterval(id)                   
                bubble1move = setInterval(function() {bubble1()}, 2000);
            }
        }
        var id = setInterval(frame, 10) // draw every 10ms
    }       
}
if(bubble1move != 0)
{//interval is finished
    function bubble1()
    {
        clearInterval(bubble1move);     
        document.getElementById("img-bubble1").style.zIndex = "1";
        bubble2move = setInterval(function() {bubble2()}, 2000);
    }
}
if(bubble2move != 0)
{//interval is finished
    function bubble2()
    {
        clearInterval(bubble2move)
        var vBubble2 = document.getElementById("img-bubble2").style
        vBubble2.zIndex = "1";
    }
}
window.onload = function initialiser()
{
    mover = setInterval(move, 1000);//initial time to animation
}

所有getElementByIds都获得包含图像的div标签。

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

看起来你在js的开头将你的mover变量初始化为0,而你的if语句只是声明mover != 0的函数。初始化mover = 1;或将您的函数置于if语句之外(推荐)。您只是试图在move()存在之前致电

答案 1 :(得分:1)

将您的功能移到if之外。它没有理由在if范围内。由于Firefox解释函数的方式(与其他浏览器不同),它在Firefox上不起作用。

有关详细信息,请参阅this question

感谢@freakish的链接。