-2

だから私は画像を変更してループにしようとしていて、このスクリプトを思いついたのですが、私が抱えている問題は、2番目の画像に変更するとjavascriptがフリーズすることです。 while(true) 部分ですが、修正方法がわかりません。助けてください。
ありがとうございます

var images = new Array();
images[0] = "image1.jpg";
images[1] = "image2.jpg";
images[2] = "image3.jpg";
setTimeout("changeImage()", 3000);
var x=0;

function changeImage()
{
    while(true){
        document.getElementById("img").src=images[x]
        x++;
    }

    if (x=2){
        x=0;
    }
}
4

3 に答える 3

1

意図的に無限ループを作ったからです。

あなたが求めている他の説明はわかりません....

あなたのコードは決して条件に達しません:

if (x=2)

ループから抜け出せないからです。ループをエスケープする方法を提供します。画像を定期的に循環させたい場合は、タイマーで画像を取得することを検討する必要があります。

また、コードは無限の数の画像があることを意味します。

于 2013-05-07T17:54:48.687 に答える
1

JavaScript がシングルスレッドであるため、ブラウザがフリーズします。ループが完了するまで、すべての入力とイベントを無視します。

あなたが本当に欲しいのは次のようなものです:

var x = 0; 
var nextImage= function () { 
    document.getElementById("img").src = images[x]; 
    x = (x + 1) % images.length;
}
setInterval(nextImage, 3000);

各サイクルで、コードは 1 つの画像を変更して終了し、他のイベントを処理できるようにします。

ところで、私はあなたの質問に答えるために、良いJavaScriptを書こうとしていたわけではありません。

于 2013-05-07T18:07:02.847 に答える