为了账号安全,请及时绑定邮箱和手机立即绑定

如何在循环内延迟两个函数?

如何在循环内延迟两个函数?

慕姐8265434 2021-11-12 18:22:58
我已经搜索了一整天,但我不知道如何解决它。我想做的就是遍历一堆元素并对每个元素执行以下操作:添加班级等待 3 秒删除添加的类转到下一个元素我已经尝试了很多东西,现在我有了这个:/* Avatars is an array of elements */var i = 0function testimonialCarousel(avatars){    const avatarsLen = avatars.length    avatars[i].classList.add("focused-avatar");    i++;    if (i > 0){        avatars[i-1].classList.remove("focused-avatar");    };    if (i < avatarsLen) {            setTimeout(testimonialCarousel.bind({}, avatars), 3000);    } else{        i = 0;    };};我知道这里有很多问题已经涵盖了单个函数的延迟,例如:如何在 JavaScript 循环中添加延迟?这不是我的情况。我可以实现它,以 3s 的间隔为每个元素添加类。我无法实现的是“删除课程”步骤。有人可以帮助我吗?
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

好的,我已经找到了如何处理它:


for (let i = 0; i <= avatarsLen; i++){

        setTimeout(function(){

            if (i > 0){

                avatars[i-1].classList.remove("focused-avatar");

            };


            if (i == avatarsLen) {

                return testimonialCarousel();

            };


            avatars[i].classList.add("focused-avatar");

            balloonMessage.style.opacity = 0;

            balloonName.style.opacity = 0;

            setTimeout(function(){

                balloonMessage.innerHTML = balloonContent[i].message;

                balloonName.innerHTML = "— " + balloonContent[i].name;

                balloonMessage.style.opacity = 1;

                balloonName.style.opacity = 1;

            }, 650)


        }, i*3000);  /* <--- The solution lays here. */


查看完整回答
反对 回复 2021-11-12
  • 1 回答
  • 0 关注
  • 152 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信