Javascript 获取表中某列的总和
假设我有下表,我想添加列Javascript 获取表中某列的总和,javascript,jquery,Javascript,Jquery,假设我有下表,我想添加列Credits,以获得其总和 <table id="tbl_semester11"> <thead> <tr> <th>Semester 1</th> </tr> </thead> <thead> <tr> <
Credits
,以获得其总和
<table id="tbl_semester11">
<thead>
<tr>
<th>Semester 1</th>
</tr>
</thead>
<thead>
<tr>
<th>Module Code</th>
<th>Module Name</th>
<th>Credits</th>
<th>Module %</th>
<th>Grade</th>
</tr>
</thead>
<tbody>
<tr>
<td>MGMT1101C</td>
<td>Management Seminar</td>
<td id="txtcredit112" class="sum">3</td>
<td><input type="number" id="txtpercentage112" min="40" max="100" onchange="process([1,1,2,5]);"></td>
<td id="txtgrade112">D</td>
</tr>
<tr class="alt">
<td>HCA1105C</td>
<td>Computer Architecture</td>
<td id="txtcredit113" class="sum">4</td>
<td><input type="number" id="txtpercentage113" min="40" max="100" onchange="process([1,1,3,5]);"></td>
<td id="txtgrade113">D</td>
</tr>
<tr>
<td>PROG1115C</td>
<td>Object Oriented Software Development I</td>
<td id="txtcredit114" class="sum">4</td>
<td><input type="number" id="txtpercentage114" min="40" max="100" onchange="process([1,1,4,5]);"></td>
<td id="txtgrade114">D</td>
</tr>
<tr class="alt">
<td>MATH1103C</td>
<td>Decision Mathematics</td>
<td id="txtcredit115" class="sum">3</td>
<td><input type="number" id="txtpercentage115" min="40" max="100" onchange="process([1,1,5,5]);"></td>
<td id="txtgrade115">D</td>
</tr>
<tr>
<td>ITE1107C</td>
<td>Language and Communication Seminar</td>
<td id="txtcredit116" class="sum">3</td>
<td><input type="number" id="txtpercentage116" min="40" max="100" onchange="process([1,1,6,5]);"></td>
<td id="txtgrade116">D</td>
</tr>
<tr class="al">
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td bgcolor="#b3ffb3"><b>S.P.A</b></td>
<td bgcolor="#4dff4d" id="spa11">40.7</td>
</tr>
</tbody>
</table>
arr
是与process相同的参数,即[1,1,3,5]
。问题是sum总是返回0您的选择器错误。如果要使用.sum
类选择子级,应在父级和子级之间添加空格。你的职能应该是:
function getsum(arr) {
var sum = 0;
var tbl_id = 'tbl_semester' + arr[0] + arr[1];
$('#' + tbl_id + ' .sum').each(function () {
sum += parseInt($(this).text())||0;
});
return sum;
}
另外,我使用了
parseInt()
,因为.text()
返回一个字符串。这样您就可以确保有一个NaN
值或一个实际整数 您的选择器错误。如果要使用.sum
类选择子级,应在父级和子级之间添加空格。你的职能应该是:
function getsum(arr) {
var sum = 0;
var tbl_id = 'tbl_semester' + arr[0] + arr[1];
$('#' + tbl_id + ' .sum').each(function () {
sum += parseInt($(this).text())||0;
});
return sum;
}
另外,我使用了
parseInt()
,因为.text()
返回一个字符串。这样您就可以确保有一个NaN
值或一个实际整数 缺少$
,总和+=+$(此).text()| 0代码>@PranavCBalan啊。。。我没有注意到这一点,但即使现在sum返回0,您也可以使用普通JavaScript来缩短函数的长度let sum=[…document.queryselectoral(“#”+tbl_id)].reduce((x,y)=>x.textContent+y.textContent)代码>假设这是一种ES6扩展和箭头语法,reduce是一种更好的方法来总结数组(在我看来)并在$(''#'+tbl_id+'.sum')处缺少一个空格。每个…
,应该是这样的$('#'+tbl_id+'.sum')。每个…
,缺少arr[2]
缺少$
,sum+=+$(此).text()| 0代码>@PranavCBalan啊。。。我没有注意到这一点,但即使现在sum返回0,您也可以使用普通JavaScript来缩短函数的长度let sum=[…document.queryselectoral(“#”+tbl_id)].reduce((x,y)=>x.textContent+y.textContent)代码>假设这是一种ES6扩展和箭头语法,reduce是一种更好的方法来总结数组(在我看来)并在$(''#'+tbl_id+'.sum')处缺少一个空格。每个…
,应该是这样的$('#'+tbl_id+'.sum')。每个…
,缺少arr[2]
如果您解释了parseInt的需要,答案会更好:)如果您解释了parseInt的需要,答案会更好:)