1

我正在使用以下代码遍历一个论坛

var formWithTable = document.getElementsByTagName("table")[0];

var table = formWithTable.getElementsByTagName("tbody")[0];

var rows = table.getElementsByTagName("tr");

for(i = 0; i < rows.length; i++)
{
  var cols = rows[i].getElementsByTagName("td");
  for (j = 0; j < cols.length; j++)
  {
    ...
  }
}

HTML 文档如下:

<div>
<table class="inventory sortable" id="listContainer_datatable" summary="Properties of various    threads" title="Properties of various threads">
<thead>
<tr>
...
<tbody id="listContainer_databody">   
<tr id="listContainer_row:0" class="">
<td  class="smallCell" valign="top">

<input  type="checkbox" name="formCBs" value="2161433" id="listContainer_formCBs2161433" title="Add a new message." />
<label for="listContainer_formCBs2161433" id="listContainer_formCBs2161433Label" class="hideoff">

</label>
</td>
...
</table>
</div>

但是,我不知道为什么document.getElementsByTagName("table")[0]返回“未定义”。

非常感谢任何帮助。

4

2 回答 2

0

你真正应该使用的是 jQuery。然后你可以这样做

$("table")[0]

选择文档的第一个表格。就那么简单。


在其他新闻中,如果那您的文档,则它不是有效的 HTML,因此不能保证 Javascript DOM 可以正常工作。

于 2013-07-17T05:23:37.660 回答
0

您的脚本很好,唯一的问题可能是在将表添加到 dom 之前添加了脚本,这可能是问题的原因。

解决方案是将脚本移动到 window.onload

window.onload = function(){
    var formWithTable = document.getElementsByTagName("table")[0];

    var table = formWithTable.getElementsByTagName("tbody")[0];

    var rows = table.getElementsByTagName("tr");

    for(i = 0; i < rows.length; i++) {
        var cols = rows[i].getElementsByTagName("td");
        for (j = 0; j < cols.length; j++) {
            console.log(cols[j].innerHTML)
        }
    }
}

演示:小提琴

于 2013-07-17T05:45:49.747 回答