Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 传递到函数的变量不工作_Javascript_Html_Css_Image_Variables - Fatal编程技术网

Javascript 传递到函数的变量不工作

Javascript 传递到函数的变量不工作,javascript,html,css,image,variables,Javascript,Html,Css,Image,Variables,我正在尝试创建两个函数,允许我在图像源数组中滚动并在图像视图中显示它们:nextImage()和previousImage()。如果我使用原始的num变量,这些都会起作用,但是如果我尝试使其更通用,以便在代码中重用它们,并且我将变量num作为参数传递到窗口中。onload不起作用,它只会到达数字1,不会返回。请看代码。提前谢谢你,亚历山德罗 var num = 0; var imagesArray1 = ["img/campionatigiovanili2018/img1.jpg", "img

我正在尝试创建两个函数,允许我在图像源数组中滚动并在图像视图中显示它们:nextImage()和previousImage()。如果我使用原始的num变量,这些都会起作用,但是如果我尝试使其更通用,以便在代码中重用它们,并且我将变量num作为参数传递到窗口中。onload不起作用,它只会到达数字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 {
  };
}
var num=0;
var imagesArray1=[“img/campionatigiovanili2018/img1.jpg”、“img/campionatigiovanili2018/img2.jpg”、“img/campionatigiovanili2018/img3.jpg”];
window.onload=函数(){
让logo=document.getElementById('logo');
logo.addEventListener(“单击”,函数(){
window.location.href=“index.html”;
});
document.getElementById('postImage1').setAttribute(“src”,imagesArray1[num]);
//以前的图像
document.getElementById('previousImage')。addEventListener(“单击”,函数(){
前一幅图像(“后图像1”,图像数组1,num)
});
document.getElementById('nextImage')。addEventListener(“单击”,函数(){
下一个图像(“后图像1”,图像数组1,num);
});
};
函数nextImage(posimage、imageArray、myVar){
if(myVar<2){
myVar=myVar+1
document.getElementById(postImage).setAttribute(“src”,imageArray[myVar]);
console.log(myVar);
}否则{
}
};
函数previousImage(postImage、imageArray、myVar){
如果(myVar>0){
myVar=myVar-1
document.getElementById(postImage).setAttribute(“src”,imageArray[myVar]);
console.log(myVar);
}否则{
};
}

请访问函数中的
num
变量,不要将其作为参数传递:

function nextImage(postImage, imageArray){
  if (num < 2) {
    num = num +1
    document.getElementById(postImage).setAttribute("src", imageArray[num]);
    console.log(num);
  } else {
  }
};
函数下一个图像(后图像、图像阵列){
if(num<2){
num=num+1
document.getElementById(postImage).setAttribute(“src”,imageArray[num]);
console.log(num);
}否则{
}
};

在本例中,As
myVar
num
是两个不同的变量。

请访问函数中的
num
变量,不要将其作为参数传递:

function nextImage(postImage, imageArray){
  if (num < 2) {
    num = num +1
    document.getElementById(postImage).setAttribute("src", imageArray[num]);
    console.log(num);
  } else {
  }
};
函数下一个图像(后图像、图像阵列){
if(num<2){
num=num+1
document.getElementById(postImage).setAttribute(“src”,imageArray[num]);
console.log(num);
}否则{
}
};

在本例中,
myVar
num
是两个不同的变量。

Javascript总是按值传递参数,如果它们是基本的(就像您的
num
变量)

解决办法是:

  • 只需在事件处理程序中直接编辑
    num
    ,因为它是一个全局变量

  • 将其声明为对象:
    var currentObj={num:0}


如果参数是基本的,Javascript总是按值传递参数(如
num
变量)

解决办法是:

  • 只需在事件处理程序中直接编辑
    num
    ,因为它是一个全局变量

  • 将其声明为对象:
    var currentObj={num:0}


前面图像函数的第三个参数是“变量”,而不是“myVar”。谢谢!这仍然不能解决这样一个事实:当执行下一个优化变量名“imageArray”和全局变量“imagesArray1”不匹配时,它不会上升到3,而只会停止在1。上一个Image函数的第三个参数是“variable”,而不是“myVar”。谢谢!这仍然不能解决这样一个事实,即当执行下一个TIMAGE变量名“imageArray”和全局变量“imagesArray1”不匹配时,它不会上升到3,而只会停止在1。这确实解决了我的问题,所以谢谢,但是我如何在我的网页上的其他图像上重复使用它?我需要为每个图像创建不同的变量和函数这确实解决了我的问题,所以谢谢你,但是我如何在我的网页上的其他图像上重复使用它?我需要为每个图像创建不同的变量和函数