我正在创建一个javascript函数。需要一段时间(mm:ss)由用户输入然后显示在php页面上。
由于某些原因,我似乎无法解决的一个问题是当秒数大于60时,分钟数会增加x。
例如,如果用户输入01:53
的运行时间和00:25
的惩罚时间,则输出为01:18
,当它确实为02:18
时。
我创建了一个if语句,条件是如果秒大于60,则将分钟增加1.
这是我到目前为止的功能。此外,以这种方式处理时间输入更容易,还是使用time()函数处理时间更容易,更有效?
function dfbcalc() {
var dfbrun = document.getElementById("dfb_run").value;
var dfbpen = document.getElementById("dfb_pen").value;
var splitdfbrun = dfbrun.split(':');
var splitdfbpen = dfbpen.split(':');
var dfbmin;
var dfbsec;
var dfbtot;
<!-- DFB Time input -->
dfbmin = parseInt(splitdfbrun[0]) + parseInt(splitdfbpen[0])
dfbmin = dfbmin % 60;
dfbsec = parseInt(splitdfbrun[1]) + parseInt(splitdfbpen[1])
dfbsec = dfbsec % 60;
if (dfbsec < 10) {
dfbsec = '0' + dfbsec;
}
if (dfbsec > 60) {
dfbmin = dfbmin + 1;
}
alert(+dfbmin + ':' + dfbsec)
dfbtot = '0' + dfbmin + ':' + dfbsec;
document.getElementById("dfb_com").value = dfbtot;
}
var dfbrun = "01:53"
var dfbpen = "00:25"
var splitdfbrun = dfbrun.split(':');
var splitdfbpen = dfbpen.split(':');
var dfbmin;
var dfbsec;
var dfbtot;
<!-- DFB Time input -->
dfbmin = parseInt(splitdfbrun[0]) + parseInt(splitdfbpen[0])
dfbmin = dfbmin % 60;
dfbsec = parseInt(splitdfbrun[1]) + parseInt(splitdfbpen[1])
dfbsec = dfbsec % 60;
if (dfbsec < 10) {
dfbsec = '0' + dfbsec;
}
if (dfbsec > 60) {
dfbmin = dfbmin + 1;
}
document.write(+dfbmin + ':' + dfbsec+"<br/>")
dfbtot = '0' + dfbmin + ':' + dfbsec;
document.write(dfbtot);
&#13;
答案 0 :(得分:2)
这是您的操作顺序。在检查要添加的分钟数之前,您正在削减价值。
dfbmin = parseInt(splitdfbrun[0]) + parseInt(splitdfbpen[0])
dfbmin = dfbmin % 60;
dfbsec = parseInt(splitdfbrun[1]) + parseInt(splitdfbpen[1])
// Update Minutes
if (dfbsec >= 60) {
dfbmin = dfbmin + 1;
}
// Update seconds
dfbsec = dfbsec % 60;
if (dfbsec < 10) {
dfbsec = '0' + dfbsec;
}
答案 1 :(得分:1)
您可以将全部转换为秒并返回分钟和秒。 这样可以更容易掌握订单。
function pad(num) {
return ("0"+num).slice(-2);
}
function getTot(dfbrun,dfbpen) {
var splitdfbrun = dfbrun.split(':');
var splitdfbpen = dfbpen.split(':');
var dfbmin;
var dfbsec;
<!-- DFB Time input -->
dfbmin = parseInt(splitdfbrun[0],10) + parseInt(splitdfbpen[0],10);
dfbsec = dfbmin * 60;
dfbsec += parseInt(splitdfbrun[1],10) + parseInt(splitdfbpen[1],10);
dfbmin = Math.floor(dfbsec / 60);
dfbsec = dfbsec - dfbmin * 60;
return pad(dfbmin) + ':' + pad(dfbsec);
}
var dfbrun = "01:53"
var dfbpen = "00:25"
document.write(getTot(dfbrun,dfbpen));