我使用以下代码遍历一个论坛
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”。
非常感谢任何帮助。
答案 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