0

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

4

2 回答 2

0

没有合理的情况x可以拥有childNodes财产。tagLink_ar是 a ,并且该列表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>

于 2015-01-09T18:31:27.113 回答
0

有问题的语法只是初始化变量,尽管很混乱。

var x = tagLink_ar.childNodes, i=0, j;

相当于

var x = tagLink_ar.childNodes;
var i = 0;
var j = undefined;
于 2015-01-23T18:56:34.177 回答