遍历HTML文档

时间:2013-07-17 05:03:12

标签: javascript html-table

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

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]会返回“undefined”。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

你真正应该使用的是jQuery。然后是you can just do this

$("table")[0]

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


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

答案 1 :(得分: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)
        }
    }
}

演示:Fiddle