javascript - Mengapa setInterval hanya dilaksanakan sekali?
黄舟
黄舟 2017-06-30 09:55:19
0
7
995
  • Penukaran latar belakang yang mudah

bahagian jquery

$(function(){
            
            function direct(){
                
                for(var i=0;i<2;i++){
                $(".bg_img").eq(i).show().siblings().hide();
                }
            }

            setInterval(direct,1000);
        })

bahagian html

<p class="main_bg">
        <p class="bg_img bg1"></p>
        <p class="bg_img bg2"></p>
    </p>

bahagian css

.bg2 paparan lalai:tiada;

  • setInterval() hanya dilaksanakan sekali, jadi saya ingin bertanya mengapa ia tidak boleh dimasukkan untuk kali kedua?

Kawan-kawan, jangan hina saya, terima kasih atas jawapan anda~

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(7)
ringa_lee

Bukan untuk menghina anda, tetapi ini jelas merupakan masalah sintaks... Sebenarnya, saya fikir setInterval sentiasa dilaksanakan, tetapi hasil fungsi anda direct telah ditetapkan Hasil akhir gelung ialah gambar kedua dipaparkan dan gambar pertama disembunyikan, jadi Nampaknya ia tidak dilaksanakan.

Anda harus melakukan ini:

var current = 0;
function direct(){
  $(".bg_img").eq(current).show()
    .siblings().hide();
  current++;
  if (current > 1) {
    current = 0;
  }  
}

Penutupan digunakan di sini untuk menyimpan keadaan di luar pemasa supaya ia boleh digelung ke bawah setiap kali.

Juga tambahkan sedikit pengetahuan tentang rendering. Untuk gelung for jenis ini untuk menukar keadaan paparan, penyemak imbas akan cache keadaan ini dan kemudian memberikannya pada masa yang sesuai, bukannya memberikannya serta-merta sebaik sahaja anda mengubah suainya. Jadi anda tidak dapat melihatnya berkelip.

学习ing

Sila rujuk

$(function(){
  function direct(i){
    $(".bg_img").eq(i).show().siblings().hide();
  }

  var i = 0;
  setInterval(function () {
    direct(i)
    i = (i + 1) % $(".bg_img").length
  }, 1000);
})
習慣沉默

setInterval(fungsi langsung(){

            
            for(var i=0;i<2;i++){
            $(".bg_img").eq(i).show().siblings().hide();
            }
        },1000);
      直接这样试试,控制台看看,有没有报错,如果报错的话,js也不会继续执行了的。
滿天的星座

Selepas gelung sekali, nilai i ialah 1 dan kemudian kekal 1. Cuba gunakan let

过去多啦不再A梦

Adakah anda mahu kesan ini dipaparkan satu persatu mengikut urutan?

jQuery(function($){
    var bgImg = $(".bg_img"),
        maxIndex = bgImg.length - 1,
        i = 0;

    function direct(){
        bgImg.eq(i).show().siblings().hide();

        if (i < maxIndex) {
            i++;
        } else {
            i = 0;
        }
    }

    setInterval(direct, 1000);
});
为情所困

$(fungsi(){

var index = 0;
setInterval(function(){
    (index < $('.bg_img').length) ? index ++ : index = 0;
    $('.bg_img').eq(index).show().siblings().hide();
},1000);

})

滿天的星座
setInterval(direct(),1000);

Saya tidak tahu sama ada ia betul, tetapi saya sentiasa merasakan bahawa ini adalah masalahnya

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan