2010-12-01 22 views
0

我用下面的javascript函數添加一列的值表:添加表列細胞輸入文本框,並沒有

function sumOfColumns(tableID, columnIndex, hasHeader) { 
    var tot = 0; 
    $("#" + tableID + " tr" + (hasHeader ? ":gt(0)" : "")) 
    .children("td:nth-child(" + columnIndex + ")") 
    .each(function() { 
     tot += $(this).html(); 
    }); 
    return tot; 
} 

我想修改它,所以它在增加,不僅數量該單元格,但還包括單元格中的文本框的值。單元格可以有一個數字或帶有數字的文本框。

以下細胞加起來應該2115:

<table> 
<tr><td>100</td></tr> 
<tr><td><input type="text" value="5" /></td></tr> 
<tr><td>10</td></tr> 
<tr><td><input type="text" value="2000" /></td></tr> 
</table> 

我該怎麼做最有效? 感謝您的輸入!

回答

2

你可以做這樣的事情:

function sumOfColumns(tableID, columnIndex, hasHeader) { 
    var tot = 0; 
    $("#" + tableID + " tr" + (hasHeader ? ":gt(0)" : "")) 
    .children("td:nth-child(" + columnIndex + ")") 
    .each(function() { 
     tot += parseFloat($(this).text() || $('input:text', this).val()); 
    }); 
    return tot; 
} 

我取代parseFloat(),你沒有包括您FNUM(文字,布爾)功能。

Demo is here:http://jsfiddle.net/JamesKovacs/hvBHq/

+0

非常感謝! – supercoco 2010-12-01 03:25:49