久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - setInterval為什么只執(zhí)行一次

瀏覽:144日期:2023-04-25 08:53:57

問題描述

簡單的背景切換

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)入不了第二次?

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

問題解答

回答1:

不是鄙視你,但這明顯是語法問題……實(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)保存在定時器的外面,才能夠每次往下循環(huán)。

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

回答2:

參考一下

$(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);})回答3:

setInterval(function direct(){

for(var i=0;i<2;i++){ $('.bg_img').eq(i).show().siblings().hide(); }},1000); 直接這樣試試,控制臺看看,有沒有報錯,如果報錯的話,js也不會繼續(xù)執(zhí)行了的。回答4:

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

回答5:

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

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);});回答6:

$(function(){

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

})

回答7:

setInterval(direct(),1000);

不知道對不對,但是總感覺是這個的問題

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 灌南县| 绥德县| 齐齐哈尔市| 双柏县| 巢湖市| 临澧县| 台山市| 名山县| 工布江达县| 临汾市| 富源县| 资中县| 柳河县| 墨竹工卡县| 阳谷县| 林州市| 称多县| 满洲里市| 陆川县| 新民市| 乐清市| 桑日县| 中卫市| 宜兴市| 柘荣县| 沐川县| 临武县| 延长县| 兰州市| 区。| 防城港市| 康乐县| 东源县| 潼南县| 冷水江市| 龙门县| 金寨县| 马边| 临沂市| 无为县| 文山县|