使用childNodes从数组中初始化变量

时间:2015-01-09 17:16:57

标签: javascript arrays child-nodes

有人可以帮助解释以下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

2 个答案:

答案 0 :(得分:0)

没有合理的情况x可能有childNodes属性。 tagLink_arNodeList,该列表中的每个元素都有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;