2010-08-25 76 views
0

为什么不工作?

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 +子字符串+ another_string_action中写入相同的值。

Firebug的写入错误:$(本).find( “TD”)(6)式的.html()为null

+1

您确定每行都有第6个单元吗? – 2010-08-25 18:33:27

+0

你可以在这里粘贴你的HTML(或代码片段)吗? – notJim 2010-08-25 18:38:30

+0

@Nick - '.eq(6)'实际上会(如你所知)在每一行中需要第7列。 – user113716 2010-08-25 19:12:04

回答

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); 
}); 
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()。那真的是你想要的吗?

+0

谢谢,它的工作 – user431062 2010-08-25 20:14:10

相关问题