Changement d'arrière-plan simple
partie jquery
$(function(){
function direct(){
for(var i=0;i<2;i++){
$(".bg_img").eq(i).show().siblings().hide();
}
}
setInterval(direct,1000);
})
partie HTML
<p class="main_bg">
<p class="bg_img bg1"></p>
<p class="bg_img bg2"></p>
</p>
partie CSS
.bg2 affichage par défaut : aucun ;
setInterval() n'a été exécuté qu'une seule fois, je voudrais donc demander pourquoi il ne peut pas être saisi une deuxième fois ?
Tout le monde, ne me méprisez pas, merci pour vos réponses~
Je ne veux pas vous mépriser, mais c'est évidemment un problème de syntaxe... En fait, je pense que setInterval est toujours exécuté, mais le résultat d'exécution de votre fonction
direct
est corrigé. Le résultat final de la boucle est que la deuxième image est affichée. et la première image est masquée, il semble donc qu'elle ne soit pas implémentée.Tu devrais faire ceci :
Une fermeture est utilisée ici pour enregistrer l'état en dehors de la minuterie afin qu'il puisse être bouclé à chaque fois.
Ajoutez également quelques connaissances sur le rendu. Pour que ce type de boucle
for
change l'état d'affichage, le navigateur mettra en cache ces états puis les restituera à un moment approprié, au lieu de les restituer immédiatement dès que vous le modifiez. Donc on ne peut même pas le voir clignoter.Veuillez vous y référer
setInterval(function direct(){
Après avoir bouclé une fois, la valeur de i est 1 puis elle reste 1. Essayez d'utiliser let
Voulez-vous que cet effet soit affiché un par un dans l'ordre ?
$(fonction(){
})
Je ne sais pas si c'est vrai, mais j'ai toujours l'impression que c'est là le problème