Javascript 如何使用jquery汇总每个TR的所有持续时间(hh:mm)?

Javascript 如何使用jquery汇总每个TR的所有持续时间(hh:mm)?,javascript,html,Javascript,Html,我有3个输入。一个输入包含开始时间,另一个包含结束时间,第三个输入以HH:mm格式包含开始时间和结束时间之间的持续时间 我想汇总所有持续时间,以HH:mm格式输出,并显示在总持续时间输入文本框中。我总结了我所有的时间,但它没有给我任何东西。这里的错误是什么?有人能帮忙吗 例如: <table id='timelist'> <tr> <td><input type="text" name="startt

我有3个输入。一个输入包含开始时间,另一个包含结束时间,第三个输入以HH:mm格式包含开始时间和结束时间之间的持续时间

我想汇总所有持续时间,以HH:mm格式输出,并显示在总持续时间输入文本框中。我总结了我所有的时间,但它没有给我任何东西。这里的错误是什么?有人能帮忙吗

例如:

       <table id='timelist'> 
        <tr> 
          <td><input type="text" name="starttime" id="starttime" value="06:00"></td>
          <td><input type="text" name="endtime" id="endtime" value="07:55"></td>
          <td><input type="text" name="duration" id="duration" value="01:55"></td>
        </tr>

        <tr> 
          <td><input type="text" name="starttime" id="starttime" value="07:55"></td>
          <td><input type="text" name="endtime" id="endtime" value="23:45"></td>
          <td><input type="text" name="duration" id="duration" value="15:50"></td>
        </tr>

        <tr> 
          <td><input type="text" name="starttime" id="starttime" value="23:45"></td>
          <td><input type="text" name="endtime" id="endtime" value="04:10"></td>
          <td><input type="text" name="duration" id="duration" value="04:25"></td>
        </tr>
      </table>

<!----total hour output to show here---->
Total Duration: <input type="text" name="totalduration" id="totalduration">

总持续时间:
这是我的JS:

$('#timelist tr').each(function (i, row)
        {
            var fields = $(this).find(':input');
            var startime = fields.eq(1).val();
            var endtime = fields.eq(2).val();

            var str0 = "";
            var str1 = "";

            if(startime >= "00:00" && startime < "06:00"){
                        str0 = "01/02/1970 " + startime;
                    }else{
                        str0 = "01/01/1970 " + startime;                            
                    }

            if(endtime >= "00:00" && endtime <= "06:00"){
                        str1 = "01/02/1970 " + endtime;
                    }else{
                        str1 = "01/01/1970 " + endtime;
                    }

            var diff = (Date.parse(str1)-Date.parse(str0))/1000/60;
                    var hours = String(100+Math.floor(diff/60)).substr(1);
            var mins = String(100+diff%60).substr(1);
            var duration = fields.eq(3).val(hours+':'+mins);

                duration += duration;
}); 

    $('#totalduration').val(duration);
$('timelist tr')。每个(函数(i,行)
{
变量字段=$(this.find(':input');
var startime=fields.eq(1.val();
var endtime=fields.eq(2.val();
var str0=“”;
var str1=“”;
如果(开始时间>=“00:00”和开始时间<“06:00”){
str0=“01/02/1970”+开始时间;
}否则{
str0=“01/01/1970”+开始时间;
}

如果(endtime>=“00:00”&&endtime有一件事需要指出…具有相同ID的多个元素是无效的HTML

幸运的是,在这种情况下这没什么大不了的,但这是你应该改变的

这里有一个非jquery的答案

constresult=[…document.querySelectorAll('#timelist#duration'))].reduce((a,{value})=>{
const[hh,mm]=value.split(':').map(Number);
返回a+hh*60+mm;
}, 0);
常数mm=结果%60,hh=(结果mm)/60;
document.getElementById('totalduration')。value=`${hh.toString().padStart(2,0)}:${mm.toString().padStart(2,0)}`;

总持续时间:
请参阅此