Javascript 如何使用jquery汇总每个TR的所有持续时间(hh:mm)?
我有3个输入。一个输入包含开始时间,另一个包含结束时间,第三个输入以HH:mm格式包含开始时间和结束时间之间的持续时间 我想汇总所有持续时间,以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
<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)}`;
总持续时间:
请参阅此