Javascript for循环新条件

时间:2013-02-11 09:12:23

标签: javascript jquery

请检查以下代码:

for(i=0; i-DIL; i++)//see the condition here i-DIL .Is this correct?
 { 


}

是上面第二个条件,对于循环是否正确?如果是,那是什么意思?

实际代码是:

 javascript:R=0;  
 x1=.1; y1=.05;
 x2=.25; y2=.24;
 x3=1.6; y3=.24;
 x4=300; y4=200;
 x5=300; y5=200;
 DI=document.getElementsByTagName("img");
 DIL=DI.length; 
 function A(){for(i=0; i-DIL; i++)//see the condition here i-DIL .Is this correct?
 { 
 DIS=DI[ i ].style;
 DIS.position='absolute';
 DIS.left=(Math.sin(R*x1+i*x2+x3)*x4+x5)+"px"; 
 DIS.top=(Math.cos(R*y1+i*y2+y3)*y4+y5)+"px"}

R++

}
 setInterval('A()',5); void(0);

也有人可以帮我描述在脚本末尾放置void(0)的原因吗? 你可以看到反复的图像位置被反复设置。我怎样才能克服这个

3 个答案:

答案 0 :(得分:4)

它是否“正确”取决于你想要for循环到底做什么。但是,它是有效的代码,并且取决于JavaScript中的0是“假的”,而其他数字是“真实的”。

基本上,当iDIL相等时,i - DIL等于0,为了for循环条件的目的,它被评估为{{ 1}},它停止迭代。鉴于false是集合的长度,它是一种有趣的(但在技术上有效)迭代整个集合的方法。

它相当于(虽然我说的可读性不如):

DIL

答案 1 :(得分:2)

表示执行以下代码直到i-DIL != 0。即,在您的代码中,它将一直有效,直到i到达DIL

答案 2 :(得分:1)

for循环通常需要:

for(variable definition; condition; increment) {}

所以,你需要一个条件。但是,由于Javascripts具有松散的内容类型,因此您不必使用比较来使其成为truefalse

10 - 1          // = 9 equals true
10 - 9          // = 1 equals true
10 - 10         // = 0 equals false

"legit string"  // equals true
NULL            // equals false

但是,我建议进行实际比较,以避免讨厌的浏览器破坏你的状况。

for(var i = 0; i - DIL > 0; i++) {}