1

このスクリプトは、「matched_array_pics.length」を参照して「未定義または null 参照のプロパティ .length を取得できません」というメッセージでランダムにクラッシュします。クローンを作成し、同じ画像を #train div に 2 回追加すると、確実にクラッシュします。

$(document).ready(function () {

    var starting_pics = ["AN.gif", "CN.gif", "EN.gif", "GN.gif"];

    var an_array_pics = ["CN.gif", "EN.gif", "GN.gif", "AN.gif"];
    var cn_array_pics = ["EN.gif", "GN.gif", "AN.gif", "CN.gif"];
    var en_array_pics = ["GN.gif", "AN.gif", "CN.gif", "EN.gif"];
    var gn_array_pics = ["AN.gif", "CN.gif", "EN.gif", "GN.gif"];

    var grand_array_pics = [an_array_pics, cn_array_pics, en_array_pics, gn_array_pics];

    var i = 0;

    for (i = 0; i < starting_pics.length; i++) {
        $("<img/>").attr("src", "images/" + starting_pics[i]).load(function () {
            $(this).appendTo("#main");
            $(this).addClass("pics");
        });
    }


    $("#main").on("click", ".pics", function () {

        var j = $(".pics").index(this); // gets the index for the matched_array_pics...
          console.log(j);

        $("#sidebar .pics").remove();
        $(this).clone().appendTo("#train");
        $(this).clone().appendTo("#sidebar");
        $("#main .pics").remove();

        var matched_array_pics = grand_array_pics[j];   // ... in grand_array_pics.

        var k = 0;

        for (k = 0; k < matched_array_pics.length; k++) {
            $("<img/>").attr("src", "images/" + matched_array_pics[k]).load(function () {
                $(this).appendTo("#main");
                $(this).addClass("pics");
            });
        }
    });
});       //end ready
4

1 に答える 1

0

問題はこの行var j = $(".pics").index(this);にあると思います: そして、次のように書き直す必要があると思います:問題の行の直後にvar j = $(this).index();追加して、最終的にどうなるかを確認していただけると助かります。この行が実行されると、コードが実行されたときに数値ではないため、取得していると思います。console.log(j);jvar matched_array_pics = grand_array_pics[j];undefinedj

于 2013-07-28T22:15:43.260 に答える