Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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 jQuery sum单击按钮即可在表中添加所有TD值_Javascript_Jquery_Html_Json - Fatal编程技术网

Javascript jQuery sum单击按钮即可在表中添加所有TD值

Javascript jQuery sum单击按钮即可在表中添加所有TD值,javascript,jquery,html,json,Javascript,Jquery,Html,Json,我有一个表单,有几个字段,可以做一个小的计算。填充所有下拉列表并单击添加按钮后,它将显示特定任务的时间。同样,如果您进行几次计算,数据将显示在表中。时间列中的所有值将相加并显示在另一行中。我已经实现了这一点。但每次它都会不断增加现有的价值 请参阅图片: $(文档).ready(函数(){ $(“#计算”)。单击(函数(){ 设tr=$(“”).appendTo(“#数据体”); $(“#计算输入,#计算选择”)。每个(函数(索引){ var输入=$(此); $(tr).append(“”+$

我有一个表单,有几个字段,可以做一个小的计算。填充所有下拉列表并单击添加按钮后,它将显示特定任务的时间。同样,如果您进行几次计算,数据将显示在表中。时间列中的所有值将相加并显示在另一行中。我已经实现了这一点。但每次它都会不断增加现有的价值

请参阅图片:

$(文档).ready(函数(){
$(“#计算”)。单击(函数(){
设tr=$(“”).appendTo(“#数据体”);
$(“#计算输入,#计算选择”)。每个(函数(索引){
var输入=$(此);
$(tr).append(“”+$(输入).val()+“”);
});
const componentFactor=$(tr).children(“.row component”).text();
常量单位=$(tr).children(“.row单位”).text();
常量合计=组成因子*单位;
$(tr).追加(“”+总计+“”);
$(“#计算”)[0]。重置();
$(“#总计”).html(第(5)列);
函数列(索引){
var合计=0;
$(“td:n个子项(“+index+”))。每个(函数(){
total+=parseInt($(this).text(),10)| | 0;
});  
返回总数;
}
});
});

问题在于,在求和函数中包含了总行。
.each
正确地命中了右索引处的每个TD元素,但它也包括第一行

如果像这样修改求和函数,它会工作

function sumColumn(index) {
   var total = 0;
   $("td:nth-child(" + index + ")").each(function() {
       if(this.id !== 'total') {
          total += parseInt($(this).text(), 10) || 0;
       }                
    }); 
    return total;
}

同样的结论是,您正在代码中添加total;您还可以使用以下选项:

function sumColumn(index) {
    var total = 0;

    $("tr> td:nth-child(" + index + ")").not(':first').each(function(i,item) {
       total += parseInt($(this).text(), 10) || 0;
    });  

    return total;
}
您可以看到它在这里工作:

function sumColumn(index) {
    var total = 0;

    $("tr> td:nth-child(" + index + ")").not(':first').each(function(i,item) {
       total += parseInt($(this).text(), 10) || 0;
    });  

    return total;
}