2010-08-25 71 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

相關問題