JQuery .each() 返回未定义
我有两个表。第一个表仅用于标题,因为我没有找到使标题不可滚动的解决方案。第二个表包含内容,但在加载侧面时为空。首先是两个表的代码。
<table width="100%">
<caption class="splitselection">
<b>Downloads</b>
</caption>
<thead align="left">
<tr>
<th scope="col" width="36%" align="left" >Dateiname </th>
<th scope="col" width="32%" align="left" >Fortschritt </th>
<th scope="col" id="status" width="22%"align="left" >Status </th>
<th scope="col" width="10%" align="left" >Ordner öffnen </th>
</tr>
</thead>
</table>
<div style="overflow:auto; height:115px; width:100%" class="downloadFrame">
<table width="100%" id="download_table" align="center">
<tbody align="left">
</tbody>
</table>
</div>
所以现在我想用以下代码捕获表中的每个
<tr>
元素及其内容:
var interval = window.setInterval(function() {
$('#download_table > tbody > tr').each(function() {
alert($(this).find('td')[0].html);
});
},5000);
我正在创建一个检查特定表单元格的间隔。
在我的警报中,我想检索这个表单元格,但这里的警报返回“未定义”。
如果我只是写
alert($(this).find('td')[0]);
,它会返回 HTML
htmlObjectTableCell
。
如果不添加任何表行,我的间隔什么也不做。如果我添加一行,我会收到警报。因此,当我想要获取 tablecell html 时,一定是出了什么问题
然而我尝试使用 .html .val 和 .text,但得到的结果与之前相同。
请尝试以下方法:
$(this).find('td').eq(0).html();
或
$(this).find('td:first-child').html();
顺便说一句,
$("foo").html
返回对
html
函数的引用,而不是调用它。当您想实际执行名为
function_name
的函数时,请确保使用
function_name()
而不是
function_name
。
解释
在 jQuery 中,
$('selector')[0]
不会返回 jQuery 包装的对象,而是 PODO(普通的旧 Dom 对象?)。这意味着您无法在返回的对象上调用 jQuery 函数。但是
$('selector').eq(0)
返回 jQuery 包装的对象,因此您可以在其上调用 jQuery 函数。
您正在循环遍历作为 #download_table 的直接子元素的 tbody 元素的每个直接子元素。您的标记显示 tbody 元素根本没有任何子元素。
DOM 元素内容的 HTML 存储在
innerHTML
属性中,而不是名为
html
的属性中,因此您需要将该行更改为以下内容:
alert($(this).find('td')[0].innerHTML);