J'ai un groupe de témoignages pour mon site qui sont actuellement sur une page et essayons d'obtenir un div pour afficher chaque 1 à un intervalle de 5 secondes, si le tableau atteint la dernière valeur, il devrait recommencer au début de La matrice à nouveau.
Voici ce que j'ai jusqu'ici ... P>
var testimonial = new Array();
testimonial[1] = "Rugby";
testimonial[2] = "Baseball";
testimonial[3] = "Cricket";
var length = testimonial.length
var i = 1;
setInterval(function() {
while (i <= length) {
$('#testimonials p').html(testimonial[i]);
++i;
if (i == length) {
i == 1;
}
}
}, 5000);
4 Réponses :
Vous pouvez essayer
En supposant que vous commencez avec un index de 0 code> et non 1 code>
ESSAYEZ
var testimonial = ['Rugby', 'Baseball', 'Cricket'];
var numTestimonials = testimonial.length;
var index = 0;
setInterval(function() {
$('#testimonials p').text(testimonial[index]);
index = (index + 1) % numTestimonials;
}, 5000);
@ Divad12 Merci pour cela, est l'opérateur que vous avez utilisé identique à celui du module en PHP? Encore une fois merci, acceptera quand je peux :)
Puis-je vous demander pourquoi vous avez changé de HTML () en texte (), y a-t-il une réelle différence d'utiliser l'une ou l'autre?
@Colonel Je pense que cela renvoie le reste du premier opérande divisé par le deuxième opérande. Voir développeur.mozilla.org/fr/javascript/reference / Opérateurs / ...
@Colonel Si vous voulez simplement afficher des chaînes brutes à l'intérieur de votre div, alors .Text échappera à la chaîne pour vous. Voir Stackoverflow.com/q/1910814/392426 et
La fonction de seinterval est appelée toutes les 5 secondes. Cela signifie que vous affichez les 5 témoignages l'un après l'autre très rapide toutes les 5 secondes au lieu de les afficher l'un après l'autre.
Vous devriez faire quelque chose comme: p>
var testimonial = new Array();
testimonial[1] = "Rugby";
testimonial[2] = "Baseball";
testimonial[3] = "Cricket";
var length = testimonial.length
var i = 0; // arrays start with 0
setInterval(function() {
$('#testimonials p').html(testimonial[i]);
i++;
if (i == length) i = 0;
}, 5000);
Beaucoup de réponses intéressantes, donc une autre ne va pas mal. : -)
Vous pouvez le faire tout d'abord dans une fonction de fonction immédiatement appelée: p>
Le comportement ne sera pas tout à fait le même à cause de l'opérateur de pré-augmentation; Si vous démarrez i code> au -1 code>, il affichera "rugby" comme premier élément. En outre, je pensais que l'idiome d'une expression de fonction immédiatement appelée est (fonction () {...}) (); code>, pendant que vous avez (fonction () {...} ()); code> (placement proche de la parenthèse).
utiliser [] au lieu d'un nouveau tableau (). Il est préférable.
Je ne sais pas où vous avez pris ce code, mais en JavaScript, les index commencent par
0 code>@qwertymk j'ai écrit et merci
Pourquoi ne pas simplement mettre
var i = 1; code> à l'intérieur de la fonction anonyme danssetInterval code>? De cette façon, il se réinitialisera. Et comme Qwertymk a dit, les index commencent à 0.Il n'est pas tout à fait clair quelle est la question. Qu'est-ce qui ne fonctionne pas?