suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Javascript setInterval()-Funktion

Verwenden Sie die Funktion setInterval(), um CSS dynamisch zu li hinzuzufügen

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

Es wurde festgestellt, dass die Änderung von i 0->1->2->3->4->0->1->2->3->4 beträgt Folgendes: Nach dem Hinzufügen von CSS zu dem mit 3 markierten Li vergeht ein Intervall von 1 Sekunde, bevor der dynamische Wechsel fortgesetzt wird, da kein mit 4 markiertes Li vorhanden ist. Was verursacht das?

为情所困为情所困2748 Tage vor497

Antworte allen(5)Ich werde antworten

  • 伊谢尔伦

    伊谢尔伦2017-05-19 10:14:53

    因为 (i > 3) ? i = -1 : changeClass(i); 三元运算,

    当i=4的时候 (i > 3) ? 意思就是 4大于3吗?,4肯定大于3就执行i = -1,

    就不会执行changeClass(i)这个函数,所以没有下标为4的li

    Antwort
    0
  • 某草草

    某草草2017-05-19 10:14:53

    i大于3的时候,i=-1了。同时这次没有执行changeClass(i)
    if(i > 3) i = 0;changeClass(i)

    Antwort
    0
  • 習慣沉默

    習慣沉默2017-05-19 10:14:53

    0 - 3就已经4个了, 你写的(i > 3)才会变成-1, 也就是说要运行五次才会变成-1;
    如果你想运行4次就变成-1应该改成 (i >= 3)

    Antwort
    0
  • 仅有的幸福

    仅有的幸福2017-05-19 10:14:53

    if(i<3){
        changeClass(i);
    }else{
        changeClass(i);
        i = -1 
    }

    Antwort
    0
  • 仅有的幸福

    仅有的幸福2017-05-19 10:14:53

    第四个永远挂不上 所以建议把i>3 改为i>4或者i>=3

    Antwort
    0
  • StornierenAntwort