0

私がダイアショーを始めるとき、これは私が得るものです::をUncaught TypeError: Cannot read property 'src' of undefined指していfunctionますrunPicGal(以下を見てください)。あなたが助けることができることを願っています。注:奇妙なことに、画像が1回変化するのを見て、エラーが発生します。

完全なJSファイル:

var picForDiashow;
var diashowPicArray = [];
var diashowPicArrayIndex = 0;

diashowPicArray [0] = new Image(); diashowPicArray [0].src = "./pics/1.jpg";
diashowPicArray [1] = new Image(); diashowPicArray [0].src = "./pics/2.jpg";
diashowPicArray [2] = new Image(); diashowPicArray [0].src = "./pics/3.jpg";
diashowPicArray [3] = new Image(); diashowPicArray [0].src = "./pics/4.jpg";
diashowPicArray [4] = new Image(); diashowPicArray [0].src = "./pics/5.jpg";



function initForDiashow () {

    picForDiashow = document.getElementById("diashowPic");
}

window.onload = initForDiashow;





function startDiashow () {

    picInterval = window.setInterval(runPicGal, 1000);
}





function stopDiashow () {

    window.clearInterval(picInterval);
}




function runPicGal () {

    diashowPicArrayIndex++;

    if (diashowPicArrayIndex > diashowPicArray.length) {
        diashowPicArrayIndex = 0;
    } 
    picForDiashow.src = diashowPicArray[diashowPicArrayIndex].src;

}
4

1 に答える 1

1

常に配列の最初の位置に要素を追加しています。したがって、最初の要素である、のみdiashowPicArray[0]にアクセスできます。初期化を次のように変更します。

diashowPicArray [0] = new Image(); diashowPicArray [0].src = "./pics/1.jpg";
diashowPicArray [1] = new Image(); diashowPicArray [1].src = "./pics/2.jpg";
diashowPicArray [2] = new Image(); diashowPicArray [2].src = "./pics/3.jpg";
diashowPicArray [3] = new Image(); diashowPicArray [3].src = "./pics/4.jpg";
diashowPicArray [4] = new Image(); diashowPicArray [4].src = "./pics/5.jpg";

また、比較では、を使用しないでくださいdiashowPicArrayIndex > diashowPicArray.length。それ以外の場合は、範囲外のにアクセスしようとしますdiashowPicArray[5]==代わりに使用してください:

diashowPicArrayIndex++;
if (diashowPicArrayIndex == diashowPicArray.length) {
    diashowPicArrayIndex = 0;
} 

または、モジュラー演算を使用して上記の行を単純化します。

diashowPicArrayIndex = (diashowPicArrayIndex + 1) % diashowPicArray.length;
于 2012-09-02T12:51:07.630 に答える