0

我正在尝试用 JS 创建一个画廊脚本(我才学习了一周,所以如果我犯了任何荒谬的错误,请原谅!)。当我运行代码时,我得到一个错误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 回答