我一直在努力向用户展示他们在某个页面上花了多长时间。我想我可能已经过度复杂了。目前我向他们显示分钟数,然后向他们显示秒数。这几乎可以工作,除非它在2分5秒时例如它看起来像这样:2:5而不是2:05。然后一旦它达到10秒就罚款:2:10。
知道如何更改我的代码以更正此问题吗?谢谢!
var timer;
var timerStart;
var timeSpentOnSite = getTimeSpentOnSite();
function getTimeSpentOnSite(){
timeSpentOnSite = parseInt(localStorage.getItem('timeSpentOnSite'));
timeSpentOnSite = isNaN(timeSpentOnSite) ? 0 : timeSpentOnSite;
return timeSpentOnSite;
}
function startCounting(){
timerStart = Date.now();
timer = setInterval(function(){
timeSpentOnSite = getTimeSpentOnSite()+(Date.now()-timerStart);
localStorage.setItem('timeSpentOnSite',timeSpentOnSite);
timerStart = parseInt(Date.now());
// Convert to seconds
$("#timeSpentMin").html(parseInt(timeSpentOnSite/1000 / 60));
$("#timeSpentSec").html(parseInt(timeSpentOnSite/1000 % 60));
},1000);
}
startCounting();
答案 0 :(得分:2)
您可以使用这个简单的功能:
function padTime(time) {
return ("0" + time).slice(-2);
}
随时传递你想要的部分,它会为你填充:
var min = 5;
var sec = 2;
console.log("Unpadded: " + min + ":" + sec);
console.log("Padded seconds: " + min + ":" + padTime(sec));
console.log("Padded minutes & seconds: " + padTime(min) + ":" + padTime(sec));
min = 12;
sec = 52;
console.log("Unpadded: " + min + ":" + sec);
console.log("Padded seconds: " + min + ":" + padTime(sec));
console.log("Padded minutes & seconds: " + padTime(min) + ":" + padTime(sec));
function padTime(time) {
return ("0" + time).slice(-2);
}

答案 1 :(得分:1)
小于10的值的简单填充可以解决问题。如下所示
function padValue(value) {
if (value < 10) {
return '0' + value;
}
return value;
}
然后对于分钟值,您可以按如下方式编写:
$("#timeSpentSec").html( padValue(parseInt(timeSpentOnSite/1000 % 60)) );
答案 2 :(得分:0)
将您的功能更改为以下内容,通过使用toString()
和callin .length
进行转换,检查秒和分段中的位数,参见下面
function startCounting() {
timerStart = Date.now();
timer = setInterval(function() {
timeSpentOnSite = getTimeSpentOnSite() + (Date.now() - timerStart);
localStorage.setItem('timeSpentOnSite', timeSpentOnSite);
timerStart = parseInt(Date.now());
// Convert to seconds
let sec = parseInt(timeSpentOnSite / 1000 % 60);
sec = sec.toString().length < 2 ? '0' + sec : sec;
let min = parseInt(timeSpentOnSite / 1000 / 60);
min = min.toString().length < 2 ? '0' + min : min;
$("#timeSpentMin").html(min);
$("#timeSpentSec").html(sec);
}, 1000);
}
答案 3 :(得分:0)
要在JavaScript中填充数字,您可以使用内置的padStart
方法。在给定整数参数的情况下,您可以使用下面的函数返回格式化的字符串(如果您传入字符串,则可以忽略toString()
调用)。
function formatTime(hour, minute) {
return `${hour}:${minute.toString().padStart(2, '0')}`;
}