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

如何在for-in遍历出对象,已对象作为参数每隔一段时间执行函数?

如何在for-in遍历出对象,已对象作为参数每隔一段时间执行函数?

30秒到达战场 2019-02-12 17:16:04
页面上有多个轮播,需要获取用户设置的值来调整轮播效果,轮播间隔时间是相同的,需要处理延时时间来不同步切换,想到用定时器来控制轮播的初始化。function swiperInit(option,time){             console.log(option);                for(var key in option){                    setTimeout(function(){                        new Swiper(key, {                            direction: 'horizontal',                            loop: true,                            autoplay: time,                            speed: 2000,                            effect: option[key],                        });                    },500);                }         }swiperInit(option,advertTime);
查看完整描述

2 回答

?
摇曳的蔷薇

TA贡献1793条经验 获得超6个赞

感觉就是个闭包的问题,你试试下面的代码:


function swiperInit(option,time){

    console.log(option);

    var i = 0

    for(var key in option) {

        setTimeout((function(key){

            return function() {

                new Swiper(key, {

                    direction: 'horizontal',

                    loop: true,

                    autoplay: time,

                    speed: 2000,

                    effect: option[key],

                });

            }

        })(key),500 * i++);

    }

}

swiperInit(option,advertTime);


查看完整回答
反对 回复 2019-02-22
?
慕容森

TA贡献1853条经验 获得超18个赞

闭包问题 在 for里面写一个匿名函数就可以了


for(var currentKey in obj){

    (function (key) {

        setTimeout(function () {

            new Swiper(key, {

                direction: 'horizontal',

                loop: true,

                autoplay: time,

                speed: 2000,

                effect: option[key],

            })

        }, 500);

    })(currentKey);

}


查看完整回答
反对 回复 2019-02-22
  • 2 回答
  • 0 关注
  • 632 浏览
慕课专栏
更多

添加回答

举报

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