请检查以下代码:
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)的原因吗? 你可以看到反复的图像位置被反复设置。我怎样才能克服这个
答案 0 :(得分:4)
它是否“正确”取决于你想要for
循环到底做什么。但是,它是有效的代码,并且取决于JavaScript中的0
是“假的”,而其他数字是“真实的”。
基本上,当i
和DIL
相等时,i - DIL
等于0
,为了for
循环条件的目的,它被评估为{{ 1}},它停止迭代。鉴于false
是集合的长度,它是一种有趣的(但在技术上有效)迭代整个集合的方法。
它相当于(虽然我说的可读性不如):
DIL
答案 1 :(得分:2)
表示执行以下代码直到i-DIL != 0
。即,在您的代码中,它将一直有效,直到i
到达DIL
。
答案 2 :(得分:1)
for循环通常需要:
for(variable definition; condition; increment) {}
所以,你需要一个条件。但是,由于Javascripts具有松散的内容类型,因此您不必使用比较来使其成为true
或false
。
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++) {}