使用输入文本框添加表格列单元格而不使用

时间:2010-12-01 02:59:22

标签: javascript jquery

我正在使用以下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>

我怎样才能最有效地完成这项工作? 感谢您的投入!

1 个答案:

答案 0 :(得分: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(text,bool)函数。

演示在这里:http://jsfiddle.net/JamesKovacs/hvBHq/