使用数组中的子节点初始化变量
Initializing a variable with childNodes out of an array
谁能帮忙解释以下 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 is undefined"。
下面是函数供参考:
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";
}
}
}
暂时注意到语法错误,应该是 j=x[i++],j.nodeName
没有合理的情况 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>
有问题的语法只是初始化变量,尽管非常混乱。
var x = tagLink_ar.childNodes, i=0, j;
相当于
var x = tagLink_ar.childNodes;
var i = 0;
var j = undefined;
谁能帮忙解释以下 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 is undefined"。
下面是函数供参考:
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";
}
}
}
暂时注意到语法错误,应该是 j=x[i++],j.nodeName
没有合理的情况 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>
有问题的语法只是初始化变量,尽管非常混乱。
var x = tagLink_ar.childNodes, i=0, j;
相当于
var x = tagLink_ar.childNodes;
var i = 0;
var j = undefined;