0

Javascript 配列が必要な場所に正しく表示されていますが、配列を反復処理する前に配列をランダム化しようとしています。配列の内容は常に同じですが、ユーザーが毎回異なる順序で表示されるようにしたいと考えています。以下のコードを試しました:

var lastloaded = 0;
window.onload = loadPages;

function loadPages() {
    var arr = ["aCard.html", "bCard.html", "cCard.html", "dCard.html"];

    function shuffle() {
        var m = arr.length,
            t, i;

        // While there remain elements to shuffle…
        while (m) {

            // Pick a remaining element…
            i = Math.floor(Math.random() * m--);

            // And swap it with the current element.
            t = arr[m];
            arr[m] = arr[i];
            arr[i] = t;
        }

        return array;
    }
    var frame = document.getElementById("frameWrap");
    if (lastloaded + 1 > array.length) {
        lastloaded = window.location = "greatJob.html";
    }
    frame.src = array[lastloaded];
    lastloaded++;
}

document.getElementById('tom').onclick = loadPages;

私はこれらすべてに慣れていないので、どんな助けでも大歓迎です。

以下のコードをこれに更新しました。

var lastloaded = 0;
window.onload = loadPages;

function shuffle(array) {
    var m = array.length, t, i;

// While there remain elements to shuffle…
while (m) {

// Pick a remaining element…
i = Math.floor(Math.random() * m--);

// And swap it with the current element.
t = array[m];
array[m] = array[i];
array[i] = t;
}

return array;
}

function loadPages () {
     var arr = ["aCard.html", "bCard.html", "cCard.html", "dCard.html"];
    var frame = document.getElementById("frameWrap");
        shuffle(arr);
    if (lastloaded+1>arr.length){
        lastloaded = window.location = "greatJob.html";
    }
    frame.src = arr[lastloaded];
    lastloaded++;
    }
    document.getElementById('tom').onclick = loadPages;

正しいカウントでランダム化しますが、いくつか繰り返します。ランダム化する前は繰り返されませんでした。誰かが繰り返している理由を教えてもらえますか?

ありがとう。

4

0 に答える 0