function ReplaceContentInContainer(matchClass,content)
{
var elems = document.getElementsByTagName('*'), i;
for (i in elems)
{
if((" "+elems[i].className+" ").indexOf(" "+matchClass+" ") > -1)
{
elems[i].innerHTML = content;
}
}
}
我正在试图找出变量赋值('*'), i;
中逗号的作用
以及for (i in e)
循环中的含义。
我最好的猜测是e
分配给文档节点中的所有元素以及i
。那么这是否意味着i
是数组e
中元素数量的计数或引用(它是一个数组吗?)?
编辑:
好的。它只是实例化变量(i
)然后i
,在for
循环中,计算对象elem
中的所有元素。
答案 0 :(得分:5)
简单地将声明分开。
var elems = document.getElementsByTagName('*'), i;
与
相同var elems = document.getElementsByTagName('*');
var i;
一个更简洁,另一个可能被视为更具可读性。
在您的确切情况下,您可以使用
var elems = document.getElementsByTagName('*');
for (var i in elems)
在我看来,这是最好的,因为i
的目的是显而易见的。
由于变量的范围是函数(或全局)而不是块,因此它将完全相同。
答案 1 :(得分:2)
该逗号是因为您在本地范围内定义变量i
,它只是var
语句的一部分。如果没有逗号i
将是全局的。
您的陈述与以下内容相同:
var elems = document.getElementsByTagName('*');
var i;
如果您使用工具对代码质量进行静态分析,例如JSLint,那么它会强制您编写:
var elems = document.getElementsByTagName('*'),
i;
有几个原因:
var
(你写的更少......: - ))您可以在同一位置定义所有变量,这些变量比以下内容更容易阅读:
for(var i in elems){ //做一点事 }
perl中有类似的概念,例如:
my ($var1, $var2);
在JavaScript中,它是相同的,但您不需要将变量放在列表中。
答案 2 :(得分:1)
i
是var
语句的一部分..因此它只是创建一个新变量...
你的代码与
var elements=document.getElementsByTagName('*');
var i;