1

私はscan1()scan2()...のような6つの機能を持っていますscan6()。各関数は異なる画像をロードします。ページが読み込まれるたびに関数をランダムに呼び出したいと思います。

たとえば、最初のページ読み込み、呼び出しsacn4()

2 回目のページ読み込み、呼び出しscan6()

3 回目のページ読み込み、呼び出しscan1()

等々

ページの読み込みとは、ページの更新/再読み込みを意味します。

または、私が試しているこのコードで私を助けてください

var arr = ['scan1()', 'scan2()', 'scan3()'];
var ran = Math.floor(Math.random() * 6) + 1

$(document).ready(arr[ran]);

ありがとう

4

5 に答える 5

1
$(function() {
    var arr = [scan1, scan2, scan3],
        rand = Math.floor(Math.random() * arr.length),
        func = arr[rand];

    func();
});
于 2012-09-14T08:11:48.323 に答える
0

コードをリファクタリングする必要があります。やりたいことは、より単純なアプローチで実行できます。画像ごとに 6 つの関数は必要ありません。関数を 1 つだけ作成しscan()ます。この関数は、すべての画像を含む配列を持ち、ランダムに 1 つを選択します。このような:

function scan() {
    var images = ['im1.jpg','im2.jpg','im3.jpg','im4.jpg','im5.jpg','im6.jpg'];
    var inumber = Math.floor((Math.random()* images.length)+1);

    var random_image = images[inumber-1];

    //Do whatever you want with random_image
    alert( random_image ); //Shows the random image
}

プラスとして、上記のコードを使用すると、将来さらに画像をimages配列に追加することもでき、それらはランダムな選択に自動的に含まれます。

上記のコードを使用すると、次のようdocument.readyになります。

$(document).ready( scan() );
于 2012-09-14T08:24:33.243 に答える
0

これで修正されるはずです:

var arr = [scan1, scan2, scan3];
var ran = Math.floor(Math.random() * 6) + 1

$(document).ready(arr[ran]());

関数の名前を含む文字列ではなく、関数オブジェクトを配列に入力する必要があります。最後の行で、次のように言います。

arr[ran]()

配列から関数を取得して呼び出します。

于 2012-09-14T08:10:31.973 に答える
0

ここから:

$(function() {
    var arr = ['scan1', 'scan2', 'scan3'];
    var ran = Math.floor(Math.random() * 3) + 1;
    window[arr[ran]]();
});
于 2012-09-14T08:11:07.373 に答える
0

関数はグローバル オブジェクトに格納されるため、配列に として格納する必要は'functionName()'なく、として格納する必要があります'functionName'call()次に、またはを使用して呼び出しますapply()

var arr = ['scan1', 'scan2', 'scan3'];
var ran = Math.floor(Math.random() * 6) + 1

$(document).ready(window[arr[ran]].call(this));
于 2012-09-14T08:13:55.793 に答える