Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将对象传递给for循环_Javascript_Jquery - Fatal编程技术网

Javascript 将对象传递给for循环

Javascript 将对象传递给for循环,javascript,jquery,Javascript,Jquery,我有一个for循环,它通过一个数据属性在一组li中运行 我希望每个Lis组都有一个交错的淡入。在我将动画放入setTimeout之前,这一切都很正常。它不是在每个li中循环,而是停留在数字5上 JS: 这是我console.log(thisLi)时的色度日志在设置超时内:

我有一个for循环,它通过一个数据属性在一组li中运行

我希望每个Lis组都有一个交错的淡入。在我将动画放入
setTimeout
之前,这一切都很正常。它不是在每个li中循环,而是停留在数字5上

JS:

这是我
console.log(thisLi)时的色度日志
设置超时内

​…​​
, 
​…​
]

执行
setTimeout
回调时,循环已经完成,因此
i
已达到其最大值。您可以使用闭包在每次迭代中捕获
i
的值:

for (i = 0; i < 6; i++) {
    (function (i) {
        var thisLi = $("li[data-order='" + i + "']");
        setTimeout(function () {
            TweenMax.to(thisLi, 0.4, { css: { opacity:1 } });
        }, 200 * i);
    }(i));
}
(i=0;i<6;i++)的
{
(职能(一){
var thisLi=$(“li[数据顺序=”“+i+”]);
setTimeout(函数(){
TweenMax.to(thisLi,0.4,{css:{opacity:1}});
},200*i);
}(i) );
}

旁注:如果您没有在其他地方声明
i
,则它正在泄漏到全局范围。

执行
setTimeout
回调时,循环已经完成,因此
i
已达到其最大值。您可以在每次迭代中使用闭包捕获
i
的值:

for (i = 0; i < 6; i++) {
    (function (i) {
        var thisLi = $("li[data-order='" + i + "']");
        setTimeout(function () {
            TweenMax.to(thisLi, 0.4, { css: { opacity:1 } });
        }, 200 * i);
    }(i));
}
(i=0;i<6;i++)的
{
(职能(一){
var thisLi=$(“li[数据顺序=”“+i+”]);
setTimeout(函数(){
TweenMax.to(thisLi,0.4,{css:{opacity:1}});
},200*i);
}(i) );
}

旁注:如果您没有在其他地方声明
i
,那么它将泄漏到全局范围。

我认为您对变量thisLi的范围有问题。请尝试创建如下闭包:

var thisLi = $("li[data-order='"+i+"']");
var f = function() {TweenMax.to(thisLi,0.4, {css:{opacity:1}});};

setTimeout(f,i*200);

我认为变量thisLi的范围有问题。请尝试创建如下闭包:

var thisLi = $("li[data-order='"+i+"']");
var f = function() {TweenMax.to(thisLi,0.4, {css:{opacity:1}});};

setTimeout(f,i*200);

@FrankAstin-什么意思?阻止它泄漏到全局空间?哦,只要用
var
声明它。你几乎总是应该用
var
语句声明变量。例如
var i=0;
我说的
i
变量就是
for
循环中的变量。这就是泄漏到全局范围的。因此,您需要(var i=0;i<6;i++)的
。闭包中的
i
没有泄漏,因为它只是一个函数的参数。@FrankAstin-你是什么意思?阻止它泄漏到全局空间?哦,只要用
var
声明它。你几乎总是应该用
var
语句声明变量。例如
var i=0;
i
variabl我所说的e是
for
循环中的一个。这就是泄漏到全局范围的内容。因此,您需要
for(var I=0;I<6;I++)
。闭包中的
I
没有泄漏,因为它只是函数的一个参数。
var thisLi = $("li[data-order='"+i+"']");
var f = function() {TweenMax.to(thisLi,0.4, {css:{opacity:1}});};

setTimeout(f,i*200);