.each()> $(this).find()。eq()。html()为null

时间:2010-08-25 18:32:19

标签: javascript jquery

为什么不工作?

var str;

$('table tr').each(function() {
    str = $(this).find('td').eq(6).html().trim().substring(10, 20);
    $(this).find('td').eq(6).text(str);
});

需要在所有第6个trim + substring + another_string_action中写入相同的值。

Firebug写入错误: $(this).find(“td”)。eq(6).html()为null

2 个答案:

答案 0 :(得分:1)

您应该避免重复查找表格单元格:

$('table tr').each(function() {
  var cell = $(this).find('td').eq(6);
  if (cell.length) {
    cell.text(cell.html().trim().substring(10, 20));
  }
});

检查原始字符串以确保它与代码期望的一样长也许是件好事。最后,您使用.html() 获取内容,然后使用.text() 设置。这真的是你想要的吗?

答案 1 :(得分:1)

两件事。

首先,请记住并非所有浏览器都具有本机.trim()功能。更安全地使用jQuery的$.trim()

其次,请记住.eq()采用基于0的索引,因此如果您想要第六个<td>列,请传递5。现在你要求第七个<td>

var str;

$('table tr').each(function() { 
    var $td = $(this).find('td').eq(5); // Get sixth <td> in the row
    str = $.trim( $td.html() ).substring(10, 20);
    $td.text(str);
});