JavaScript怎么实现定时执行一个延时方法?

有这样一个需求:
<div id="demo"></div>

页面进入时这个元素是出现的,然后5s后元素消失,间隔8s后,元素出现,5s后元素再次消失,重复这个过程。
我的想法是这样的:

setInterval(function(){
    $('#demo').css('display','block')
    setTimeout(function(){
        $('#demo').css('display','none');
    },5000);
}, 8000);

但是时间貌似有问题,,是因为什么导致的呢?

阅读 4.9k
6 个回答

8s |------------|setInterval
5s |------|setTimeout
你写出来的效果应该是5s元素消失,3s后元素出现。其实你只需要把setInterval的间隔时间改为13000即可。

function delay() {
    setTimeout(function () {
        $('#demo').css('display','none');
        setTimeout(function () {
            $('#demo').css('display','block');
            delay();
        }, 8000);
    }, 5000)
}
delay();

把8000改为13000

css3 animation实现不是更好吗

const a = function (){
    setTimeout(function(){
        console.log('a');
        b()
    },1000);
}
const b = function (){
    setTimeout(function(){
        console.log('b');
        a()
    },2000);
}

a()
推荐问题