有人可以帮助解释以下JavaScript语法的用途:
var tagLink_ar = document.getElementsByTagName('td');
**var x = tagLink_ar.childNodes, i=0, j;** // Not sure ???
这是来自较旧的javascript函数,不再适用于IE> 9或FF。
tagLink_ar当然是TD标签的数组,但我以前没有看过带有索引元素i和j的变量,并且在我的在线研究中找不到类似的描述符。我只是引用起始元素和j的长度吗?
关于如何以类似方式加载x的想法?
有道理它是x,i和j的简单声明。然而得到一个“TypeError:x未定义”。
以下是作为参考的功能:
var tagLink_ar = document.getElementsByTagName('td');
**var x = tagLink_ar.childNodes, i=0, j;** // Not sure ???
while(j == x[i++]){
if(j.nodeType == 1 && nodeName == 'div'){
var viewDiv = getStyle(divElement, 'display');
if (viewDiv == 'block'){
x[j].style.borderBottom = "1px solid #000000";
}
}
}
注意到while上的语法错误,应该是j = x [i ++]和j.nodeName
答案 0 :(得分:0)
没有合理的情况x
可能有childNodes
属性。 tagLink_ar
是NodeList
,该列表中的每个元素都有childNodes
属性。
还有一些其他原因导致代码无法运行。你有没有正确复制它?
要获得代码设计的结果,您可以执行此操作(我包含一些示例HTML,以便您可以将其作为代码段运行):
var tagLink_ar = document.getElementsByTagName('td'),
children, i, j, node, viewDiv;
for (i = 0; i < tagLink_ar.length; i += 1) {
children = tagLink_ar[i].childNodes;
for (j = 0; j < children.length; j += 1) {
node = children[j];
if (node.nodeType === 1 &&
node.nodeName.toLowerCase() === 'div' &&
node.style.display === 'block') {
node.style.borderBottom = "1px solid #000000";
}
}
}
<table>
<tr>
<td>
<div>a</div>
</td>
<td>
<div style="display: block;">b</div>
</td>
</tr>
<tr>
<td>
<div style="display: block;">c</div>
</td>
<td>
<div style="display: block;">b</div>
</td>
</tr>
<tr>
<td>
<div>e</div>
</td>
<td>
<div>f</div>
</td>
</tr>
</table>
答案 1 :(得分:0)
有问题的语法只是初始化变量,虽然非常令人困惑。
var x = tagLink_ar.childNodes, i=0, j;
相当于
var x = tagLink_ar.childNodes;
var i = 0;
var j = undefined;