网页的javascript,下一个上一个图像

网页的javascript,下一个上一个图像,javascript,jquery,arrays,Javascript,Jquery,Arrays,我在一个网站上找到了一张用于切换图像的纸条,但我很难让它正常工作。 图像在你到达第四个之前都很好,我加了6个,但是它在那里很糟糕。如果有人能告诉我问题出在哪里,这是代码 谢谢 var myImg= new Array(5) myImg[0]= "recientes1"; myImg[1]= "recientes2"; myImg[2]= "recientes3"; myImg[3]= "recientes4"; myImg[4]= "recientes5"; myImg[

我在一个网站上找到了一张用于切换图像的纸条,但我很难让它正常工作。 图像在你到达第四个之前都很好,我加了6个,但是它在那里很糟糕。如果有人能告诉我问题出在哪里,这是代码

谢谢

var myImg= new Array(5)
  myImg[0]= "recientes1";
  myImg[1]= "recientes2";
  myImg[2]= "recientes3";
  myImg[3]= "recientes4";
  myImg[4]= "recientes5";
  myImg[5]= "recientes6";

myImgSrc = "recientes/";

myImgEnd = ".jpg"

var i = 0;

function loadImg(){
  document.imgSrc.src = myImgSrc + myImg[i] + myImgEnd;
}

function prev(){
  if(i<1){
    var l = i
  } else {
    var l = i-=1;
  }
  document.imgSrc.src = myImgSrc + myImg[l] + myImgEnd;
}

function next(){
  if(i>2){
    var l = i
  } else {
    var l = i+=1;
  }
  document.imgSrc.src = myImgSrc + myImg[l] + myImgEnd;
}

window.onload=loadImg;
var myImg=新数组(5)
myImg[0]=“收件人1”;
myImg[1]=“接收者2”;
myImg[2]=“接收者3”;
myImg[3]=“接收者4”;
myImg[4]=“接收者5”;
myImg[5]=“接收者6”;
myImgSrc=“recientes/”;
myImgEnd=“.jpg”
var i=0;
函数loadImg(){
document.imgSrc.src=myImgSrc+myImg[i]+myImgEnd;
}
函数prev(){
if(i2){
var l=i
}否则{
var l=i+=1;
}
document.imgSrc.src=myImgSrc+myImg[l]+myImgEnd;
}
window.onload=loadImg;
试试这个:

var myImg= new Array(5)
  myImg[0]= "recientes1";
  myImg[1]= "recientes2";
  myImg[2]= "recientes3";
  myImg[3]= "recientes4";
  myImg[4]= "recientes5";
  myImg[5]= "recientes6";

myImgSrc = "recientes/";

myImgEnd = ".jpg";

var i = 0;
loadImg();

function loadImg(){
  document.imgSrc.src = myImgSrc + myImg[i] + myImgEnd;
}

function prev(){
  i=(i<=0)?myImg.length-1:i-1;
  loadImg();
}

function next(){
  i=(i>=myImg.length-1)?0:i+1;
  loadImg();
}
next()函数中的if块似乎阻止了它继续进行(它到达了列表的末尾)。您应该将这个值从2改为类似myImg.length-1的值,以确保它不会超过您拥有的图像数量

function next(){   
    if(i>myImg.length-1){
        var l = i   
    } else {
        var l = i+=1;   
    }   
    document.imgSrc.src = myImgSrc + myImg[l] + myImgEnd; 
}
如果希望在到达末尾时next()函数转到列表的开头,则必须修改next()函数以将i重置为零。大概是这样的:

function next(){   
    if(i>myImg.length-1){
        i = 0;
        var l = i; 
    } else {
        var l = i+=1;   
    }   
    document.imgSrc.src = myImgSrc + myImg[l] + myImgEnd; 
}

您可以使用模运算符来非常干净和简单地执行此操作

function prev(){
    i = (i - 1) % myImg.length - 1;
    document.imgSrc.src = myImgSrc + myImg[i] + myImgEnd;
}

function next(){
    i = (i + 1) % myImg.length - 1;
    document.imgSrc.src = myImgSrc + myImg[l] + myImgEnd;
}
%
基本上使传递给它的数字必须介于0和其后的数字之间。因此,对于长度为6的数组,它只允许0到5之间的数字-1变为5,6变为0


看起来您的数组长度被初始化为5,然后您要添加6个条目

当您定义数组的长度(即
新数组(5)
)时,您的意思是数组中将有5个索引为0、1、2、3和4的条目。您的代码最终将创建一个长度为6的数组,它看起来像您想要的,但认为这是值得注意的,因为如果您尝试查找myImg[myImg.length],它将找不到任何内容


如何调用上一个和下一个函数?

浏览器控制台中是否有错误?模数的优先级高于
+
&
-
,因此您的代码正在执行
i-(1%myImg.length)-1
@TrueBlue Aussie谢谢-修改为适合:)
function prev(){
    i = (i - 1) % myImg.length - 1;
    document.imgSrc.src = myImgSrc + myImg[i] + myImgEnd;
}

function next(){
    i = (i + 1) % myImg.length - 1;
    document.imgSrc.src = myImgSrc + myImg[l] + myImgEnd;
}