Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取表中某列的总和_Javascript_Jquery - Fatal编程技术网

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的需要,答案会更好:)