2017-09-05 4 views
0

Fichiers est un tableau utilisé ici et passé trois éléments en elle. Après le prochain button je reçois seulement le premier article de array. Comment obtenir les éléments suivants un par un onclick suivant button?Tableau de fichiers Aperçu sur un clic

S'il vous plaît trouver le code js ci-dessous:

function plusSlides(n) { 

    var i; 
    var currentIndex= 0; 

    var files = ["","",""]; 
    if(currentIndex<files.length) 
{ 
    var omyFrame = document.getElementById("myFrame"); 
omyFrame.style.display="block"; 
omyFrame.src = files[currentIndex]; 
currentIndex++; 
    } 
n++; 
} 
+0

Je pense que votre fragment de code ne fournit pas assez de contexte. Où est le bouton suivant? Est-ce que cliquer sur le bouton suivant appelle 'plusSlides'? –

+0

Remplacez 'if' par' while'. De plus, les variables 'i' et' n' sont inutiles –

+0

Si vous remplacez 'if' par' while', vous définissez la source iframe trois fois sur chaque appel et l'iframe aura toujours le ssrc de la dernière entrée dans les fichiers. –

Répondre

0

La raison pour laquelle vous obtenez seulement le premier élément du tableau chaque fois est parce que vous déclarez currentIndex et files dans la fonction plusSlides. Chaque fois qu'il est appelé, currentIndex est réinitialisé à 0.

Essayez de mettre ces déclarations en dehors de la fonction plusSlides:

var files = ['', '', '']; 
var currentIndex = 0; 

function plusSlides() { 
    ... 
} 
0

Chaque fois que vous appelez votre fonction, vous vous réinitialisation currentIndex variables car il est dans le cadre de votre fonction. Vous pouvez faire votre currentIndex variable globale ou conserver les informations de l'indice actuel dans votre fonction:

function plusSlides(n) { 
 
    this.currentIndex = this.currentIndex || 0; 
 

 
    var files = ["", "", ""]; 
 
    if(this.currentIndex < files.length) 
 
    { 
 
     // Reset your iframe source here 
 
     this.currentIndex++; 
 
    } 
 
    console.log(this.currentIndex); 
 
}

0

La valeur « n » vous passez à la fonction est utilisée nulle part dans la fonction . De plus, les variables i et currentIndex sont réinitialisées, donc d'une certaine manière, elles ne sont pas utiles ici. Vous pouvez mettre à jour la valeur de currentIndex en fonction du paramètre transmis, puis le coder en conséquence. Essayez le code ci-dessous,

var currentIndex= 0; 
var files = ["","",""]; 

function plusSlides(n) { 
     if(n == 1) 
      currentIndex++; 
     else 
      currentIndex--; 
     currentIndex = (currentIndex <= -1)? 0 : currentIndex;   
     if(currentIndex<files.length) 
     { 
      var omyFrame = document.getElementById("myFrame"); 
      omyFrame.style.display="block"; 
      omyFrame.src = files[currentIndex]; 
     } 
    }