Utilisez la fonction setInterval() pour ajouter dynamiquement du CSS à li
<ul>
<li> 1 </li>
<li> 2 </li>
<li> 3 </li>
<li> 4 </li>
</ul>
var i = -1;
setInterval(function(){
i++;.
console.log(i);
(i > 3) ? i = -1 : changeClass(i);
}, 1000);
function changeClass(j) {
$('li').eq(j).addClass('cur').siblings().removeClass('cur');
}
Il s'avère que le changement de i est 0->1->2->3->4->0->1->2->3->4. ce qui suit Après avoir ajouté du CSS au li marqué par 3, il y aura un intervalle de 1 s avant qu'il continue à basculer dynamiquement, car il n'y a pas de li marqué par 4. Quelle est la cause de cela
Parce que (i > 3) ? i = -1 : changeClass(i); opération ternaire,
Quand i=4 (i > 3) ? Cela signifie-t-il que 4 est supérieur à 3 ? , si 4 est définitivement supérieur à 3, exécutez i = -1,
La fonction changeClass(i) ne sera pas exécutée, il n'y a donc pas de li avec l'indice 4
0 - 3 est déjà 4. Ce n'est que lorsque vous écrivez (i > 3) qu'il deviendra -1, ce qui signifie qu'il faudra cinq exécutions avant qu'il devienne -1
Si vous voulez Après avoir couru ; 4 fois, il devient -1 et doit être remplacé par (i >= 3)
?
Le quatrième ne peut jamais être raccroché, il est donc recommandé de changer i>3 en i>4 ou i>=3