0

我对 JavaScript 很陌生,所以如果这是一个愚蠢的问题,请原谅我。我正在使用下面的代码来让一个图像滑到屏幕上,然后再一个接一个地出现另外 2 个图像。这适用于 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 标签。

谢谢你的时间。

4

2 回答 2

2

看起来您在 js 开始时将您的移动变量初始化为 0 并且您的 if 语句仅声明函数 if mover != 0mover = 1;在 if 语句之外初始化或使用您的函数(推荐)。你只是想move()在它存在之前打电话

于 2012-11-28T11:39:43.577 回答
1

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

有关更多信息,请参阅此问题

感谢@freakish 的链接。

于 2012-11-28T11:41:03.070 回答