0

と書かれた front images という配列がありvar frontImages = [];ます。私が理解していることから、JavaScript配列は指定された長さを必要としません。以下のコードを実行すると、コンソールへの出力時に配列の長さとして 0 が出力されます。ただし、配列の長さを として指定すると、配列var frontImages = new Array(3);の正しい長さである 3 が出力されます。長さが指定されていない配列が 3 を返さないのはなぜですか?

function getMainPosters() {

    var games = new Image(); //create 3 images
    var apps = new Image();
    var aboutme = new Image();

    games.onload = function() { //add image to frontImages array on load

        frontImages.push(games);

    };

    apps.onload = function() {

        frontImages.push(apps);

    };

    aboutme.onload = function() {

        frontImages.push(aboutme);

    };

       games.src = "images/assets/posters/games_poster.jpg"; //specify source of image
       apps.src = "images/assets/posters/apps_poster.jpg";
       aboutme.src = "images/assets/posters/aboutme_poster.jpg";

       console.log(frontImages.length); //print the length of frontImages to console

}
4

2 に答える 2

4

イメージは非同期でロードされるため、console.log が実行されるまでは、frontImages の長さはまだ 0 です。

画像に対して情報を照会する前に、画像が読み込まれるのを待つ必要があります (jQuery Deferred またはその他のカスタム構成を使用して)。

于 2013-02-20T21:03:45.467 に答える
4

onload 関数が実行される前に配列をコンソールに出力していますが、その時点では、待っている画像がまだ読み込まれていないため、配列は空です。

于 2013-02-20T21:03:51.210 に答える