我对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标签。
感谢您的时间。
答案 0 :(得分:2)
看起来你在js的开头将你的mover变量初始化为0,而你的if语句只是声明mover != 0
的函数。初始化mover = 1;
或将您的函数置于if语句之外(推荐)。您只是试图在move()
存在之前致电
答案 1 :(得分:1)
将您的功能移到if
之外。它没有理由在if
范围内。由于Firefox解释函数的方式(与其他浏览器不同),它在Firefox上不起作用。
有关详细信息,请参阅this question。
感谢@freakish的链接。