现在我正在制作一个时间表,用户可以在其中设置他们的时间,他们的外出时间以及他们在午餐时间。然后我使用一个减去时间和功能的函数。从他们的外出时间的午餐来计算他们的时间,加上可能的加班时间。我想要的是让javascript将加班字段的值设置为'' (即null)如果他们在工作的时间是8小时或更短。
我检查加班的代码是:
// Return difference between two times in hh:mm[am/pm] format as hh:mm
function checkOvertime(timein, timeout, away) {
// Small helper function to pad single digits
function z(n){return (n<10?'0':'') + n;}
// Get difference in minutes
var subtotal = daytimeStringToMins(timeout) - daytimeStringToMins(timein) - timeStringToMins(away);
var regularhours = '08:00';
if (subtotal > timeStringToMins(regularhours)) {var overtime = daytimeStringToMins(timeout) - daytimeStringToMins(timein) - timeStringToMins(away) - timeStringToMins(regularhours);}
else {var overtime = '0';}
return z(overtime/60 | 0) + ':' + z(overtime % 60);
}
然后在我的计算功能中我有这个:
if (checkOvertime(timein, timeout, away).value == '00:00') {
document.getElementById("date-1-overtime").value = '';
} else {
document.getElementById("date-1-overtime").value = checkOvertime(timein, timeout, away);
}
因此,如果一个人在工作8小时,那么&#34; date-1-overtime&#34;田野说&#34; 00:00&#34;但我希望它没有放在那里,所以表格打印得更干净。
我想也许我在计算函数中混淆了字符串和整数之间的区别,但我不确定,希望有人可以帮助我!
答案 0 :(得分:1)
我认为您应该更改此方法以使用正则表达式提取输入的相应部分,然后使用parseint以数字形式获取值。
将其转换为分钟,如果分钟小于或等于480(8 * 60),则返回实际字符串。
此外,您无法真正为html参数指定空值。 null与0不同.null基本上是未定义的。
如果用户没有加班,你应该从你的功能中返回超时工作的分钟数,并使用0表示加班费。