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~
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:
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.Sila rujuk
setInterval(fungsi langsung(){
Selepas gelung sekali, nilai i ialah 1 dan kemudian kekal 1. Cuba gunakan let
Adakah anda mahu kesan ini dipaparkan satu persatu mengikut urutan?
$(fungsi(){
})
Saya tidak tahu sama ada ia betul, tetapi saya sentiasa merasakan bahawa ini adalah masalahnya