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 != 0。関数を初期化mover = 1;するか、if ステートメントの外で使用します (推奨)。move()存在する前に電話しようとしているだけです

于 2012-11-28T11:39:43.577 に答える
1

関数を の外に移動しますif。内にある理由はありませんif。Firefox が関数を解釈する方法が (他のブラウザーとは異なる) ため、Firefox では機能しません。

詳細については、この質問を参照してください。

リンクを提供してくれた @freakish に感謝します。

于 2012-11-28T11:41:03.070 に答える