显示时间用户已在页面上

时间:2018-01-07 20:47:22

标签: javascript jquery timer

我一直在努力向用户展示他们在某个页面上花了多长时间。我想我可能已经过度复杂了。目前我向他们显示分钟数,然后向他们显示秒数。这几乎可以工作,除非它在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();

4 个答案:

答案 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')}`;
}