我正在尝试创建两个函数,这些函数将允许我滚动浏览图像源数组并将其显示在图像视图中:nextImage()和previousImage()。如果我使用原始的num变量,但可以正常工作,但是如果我尝试使其更通用,以便可以在代码中重用它们,则我将num变量作为参数传递给我的window.onload它不起作用,它只能达到number 1,并且不会向后退。请看代码。预先谢谢你,亚历山德罗
var num = 0;
var imagesArray1 = ["img/campionatigiovanili2018/img1.jpg", "img/campionatigiovanili2018/img2.jpg", "img/campionatigiovanili2018/img3.jpg"];
window.onload = function(){
let logo = document.getElementById('logo');
logo.addEventListener("click", function(){
window.location.href = "index.html";
});
document.getElementById('postImage1').setAttribute("src", imagesArray1[num]);
//previous image
document.getElementById('previousImage').addEventListener("click", function(){
previousImage("postImage1", imagesArray1, num)
});
document.getElementById('nextImage').addEventListener("click", function(){
nextImage("postImage1", imagesArray1, num);
});
};
function nextImage(postImage, imageArray, myVar){
if (myVar < 2) {
myVar = myVar+1
document.getElementById(postImage).setAttribute("src", imageArray[myVar]);
console.log(myVar);
} else {
}
};
function previousImage(postImage, imageArray, myVar){
if (myVar > 0) {
myVar = myVar-1
document.getElementById(postImage).setAttribute("src", imageArray[myVar]);
console.log(myVar);
} else {
};
}
答案 0 :(得分:2)
请访问函数内的num
变量,不要将其作为参数传递:
function nextImage(postImage, imageArray){
if (num < 2) {
num = num +1
document.getElementById(postImage).setAttribute("src", imageArray[num]);
console.log(num);
} else {
}
};
在这种情况下,myVar
和num
是两个不同的变量。
答案 1 :(得分:2)
如果参数是原始参数,则Javascript总是按值传递参数(例如您的num
变量)
解决方案是:
只需在事件处理程序中直接编辑num
,因为它是全局变量。
将其声明为对象:var currentObj = { num:0};