javascript for web page,next-prev image

时间:2014-05-06 17:58:46

标签: 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[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;

4 个答案:

答案 0 :(得分:0)

试试这个:

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();
}

Fiddle Demo

其他信息

i=(i>=myImg.length-1)?0:i+1;

可翻译为

if( i >= myImg.length-1 ){ i = 0; }
else{ i = i+1; }

答案 1 :(得分:0)

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; 
}

答案 2 :(得分:0)

您可以使用模数运算符非常简洁地执行此操作...

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。

<强> See here for more information on the modulus (remainder) operator

答案 3 :(得分:0)

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

当您定义数组的长度(即new Array(5))时,您说数组中将有5个条目的索引为0,1,2,3和&amp; 4.你的代码最终将创建一个长度为6的数组,看起来像你想要的,但是认为值得注意,因为如果你试图找到myImg [myImg.length]它将找不到任何东西。

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