国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

javascript - setInterval為什么只執(zhí)行一次
黃舟
黃舟 2017-06-30 09:55:19
0
7
1110
  • 簡單的背景切換

jquery部分

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

            setInterval(direct,1000);
        })

html部分

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

css部分

.bg2默認(rèn)display:none;

  • setInterval()只執(zhí)行了一次,就想問為啥進(jìn)入不了第二次?

各位大佬不要鄙視我,感謝您的解答~

黃舟
黃舟

人生最曼妙的風(fēng)景,竟是內(nèi)心的淡定與從容!

全部回復(fù)(7)
ringa_lee

不是鄙視你,但這明顯是語法問題……實(shí)際上我認(rèn)為 setInterval 一直都在執(zhí)行,但是你的函數(shù) direct 的運(yùn)行結(jié)果是固定的,循環(huán)的最終結(jié)果是第二張顯示第一張隱藏,所以看起來好像沒執(zhí)行一樣。

你應(yīng)該這樣做:

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

這里用到了閉包,把狀態(tài)保存在定時(shí)器的外面,才能夠每次往下循環(huán)。

另外再補(bǔ)充一點(diǎn)渲染的知識(shí)。對(duì)于這種用 for 循環(huán)改變視圖狀態(tài),瀏覽器會(huì)把這些狀態(tài)都緩存起來,然后擇機(jī)渲染,而不是你一修改它就立刻渲染。所以你連閃一下都看不到。

學(xué)習(xí)ing

參考一下

$(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);
})
習(xí)慣沉默

setInterval(function direct(){

雷雷
滿天的星座

循環(huán)一次之后i的值為1 然后就一直是1 用let試試

過去多啦不再A夢(mèng)

你是不是要的這種效果,按順序一個(gè)一個(gè)顯示?

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);
});
為情所困

$(函數(shù)(){

雷雷

})

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

不知道對(duì)不對(duì),但是總感覺是這個(gè)的問題

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板