0

私は JS でギャラリー スクリプトを作成しようとしています (私は 1 週間しか学習していないので、ばかげた間違いを犯した場合はご容赦ください!)。コードを実行すると、 は予期しないトークンであるcontrolLeft.onclick = changeImage(--);というエラーが表示されます。(

私の素人の目から見ると、すべて問題ないはずですが、明らかにそうではありません。ここで何が間違っていましたか:

//Javascript Image Changer

var currentImage = document.getElementById("currentImage");

var imageArray = ["img/1.jpg", "img/2.jpg", "img/3.jpg", "img/4.jpg"];

var imageIndex= 0;

function changeImage(param){
    currentImage.setAttribute("src", imageArray[imageIndex]);
    imageIndex[param];
    if (imageIndex >= imageArray.length){
        imageIndex = 0;
    }else if(imageIndex <= -1){
        imageIndex = imageArray.length + 1;
    }
}

var controlLeft = document.getElementById("left");
var controlRight = document.getElementById("right");

controlLeft.onclick = changeImage(--);
controlRight.onclick = changeImage(++);
4

2 に答える 2

2

他のもののように演算子を渡すことはできません。高階関数を持つプログラミング言語でさえ、同じことは通常演算子には当てはまりません。

それに加えて、onclick関数呼び出しの結果ではなく、関数を期待します。

動作する可能性が高いスニペットを次に示します。

function changeImage(mod){
    currentImage.setAttribute("src", imageArray[imageIndex]);
    imageIndex += mod;
    if (imageIndex >= imageArray.length){
        imageIndex = 0;
    }else if(imageIndex <= -1){
        imageIndex = imageArray.length + 1;
    }
}

var controlLeft = document.getElementById("left");
var controlRight = document.getElementById("right");

controlLeft.onclick = function() { changeImage(-1); };
controlRight.onclick function() { changeImage(1); };
于 2012-12-11T10:36:32.440 に答える
-4

少し変更するだけです:

controlLeft.onclick = function() {
    changeImage('back');
};

controlRight.onclick = function() {
    changeImage('forward');
};
于 2012-12-11T10:36:43.170 に答える