Javascript 显示用户在页面上的时间
我一直在努力向用户展示他们在某个页面上花了多长时间。我想我可能把它复杂化了。现在我给他们看分钟数,然后给他们看秒数。这几乎是有效的,除非它在2分5秒时,例如,它看起来是2:5而不是2:05。然后,一旦达到10秒,罚款:2:10 你知道我该如何修改代码来纠正这个错误吗?谢谢Javascript 显示用户在页面上的时间,javascript,jquery,timer,Javascript,Jquery,Timer,我一直在努力向用户展示他们在某个页面上花了多长时间。我想我可能把它复杂化了。现在我给他们看分钟数,然后给他们看秒数。这几乎是有效的,除非它在2分5秒时,例如,它看起来是2:5而不是2:05。然后,一旦达到10秒,罚款:2:10 你知道我该如何修改代码来纠正这个错误吗?谢谢 var timer; var timerStart; var timeSpentOnSite = getTimeSpentOnSite(); function getTimeSpentOnSite(){ timeSp
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();
只需对小于10的值进行简单的填充即可实现此目的。下面是这样的
function padValue(value) {
if (value < 10) {
return '0' + value;
}
return value;
}
您可以使用以下简单功能:
function padTime(time) {
return ("0" + time).slice(-2);
}
在您想要的任何时间传递它,它将为您填充:
var最小值=5;
var-sec=2;
日志(“未添加:+min+:”+sec);
log(“填充秒:+min+:”+padTime(秒));
log(“填充的分钟和秒:“+padTime(min)++”:“+padTime(sec));
最小值=12;
秒=52;
日志(“未添加:+min+:”+sec);
log(“填充秒:+min+:”+padTime(秒));
log(“填充的分钟和秒:“+padTime(min)++”:“+padTime(sec));
功能padTime(时间){
返回(“0”+时间).slice(-2);
}
将您的功能更改为以下内容,使用toString()
和callin转换秒数和分钟数,检查秒数和分钟数部分的位数。长度参见下文
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);
}
函数开始计算(){
timerStart=Date.now();
计时器=设置间隔(函数(){
TimePentOnsite=getTimeSpentOnSite()+(Date.now()-timerStart);
setItem('TimePentOnsite',TimePentOnsite);
timerStart=parseInt(Date.now());
//转换为秒
设sec=parseInt(timeSpentOnSite/1000%60);
秒=秒toString()。长度<2?'0'+秒:秒;
设min=parseInt(timespent/1000/60);
最小值=最小值toString()。长度<2?'0'+最小值:最小值;
$(“#timespuntmin”).html(min);
$(“#timeSpentSec”).html(秒);
}, 1000);
}
要在JavaScript中填充数字,可以使用内置的padStart
方法。在给定整数参数的情况下,可以使用下面的函数返回格式化字符串(如果传入字符串,可以忽略toString()
调用)
@ChrisG Hey Chris的可能重复项您能告诉我在这种情况下如何实现它吗?较旧的浏览器不支持padStart()
函数。MS Edge支持它,但IE不支持它。模板文本(带回号的字符串)也支持它。
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);
}
function formatTime(hour, minute) {
return `${hour}:${minute.toString().padStart(2, '0')}`;
}