显示自上次点击以来已经过了多长时间?

时间:2012-09-28 09:38:03

标签: javascript jquery

我想节省用户点击页面的时间。所以我可以稍后返回他用功能点击的时间。

我认为它基本上应该是这样的:

var currentTime = new Date();
var lastClick = currentTime.getTime();
$("body").click(function () {
var lastClick = currentTime.getTime();
    });

function howlong() {
console.log('last click was: ' + currentTime.getTime() - lastClick + 'ms ago');
}

然而我无法使其发挥作用。怎么回事0.我做错了什么?

5 个答案:

答案 0 :(得分:5)

  1. 您需要从处理程序中删除var,否则您在本地范围内再次声明lastClick ,而您实际上从未实际设置你认为你的变量。

  2. Date实例未更新。它的值总是是它构建的时间;每次你想要一个新的 时,你都必须做一个新的new Date()

  3. 考虑到这两个因素,以下内容应该有效;

    var lastClick;
    $("body").click(function () {
        lastClick = (new Date()).getTime();
    });
    
    function howlong() {
        console.log('last click was: ' + ((new Date()).getTime() - lastClick) + 'ms ago');
    }
    

    请注意()周围可能的 WTF 额外new Date()。这样可以确保构造一个新的Date,并在其上调用getTime(),而不是调用Date().getTime(),然后调用new(这是错误的!)。

    您还必须将数学-包含在howlong()内的括号中,以便在字符串连接之前进行数学运算。

答案 1 :(得分:1)

您修改后的代码jsfiddle

var  lastClick ;

$(document).click(function () {
      lastClick = Date.now();
        setTimeout(howlong, 100);//call howlong after 100 ms (this line for testing only). you can call howlong from anywhere in doc to get difference.
    });

function howlong() {
             console.log('last click was: ' +( Date.now() - lastClick ) + 'ms ago');
}​

答案 2 :(得分:0)

lastClick仅在jQuery函数的范围内有效。您需要在该函数之外声明它

var currentTime = new Date();
var lastClick;
$("body").click(function () {
lastClick = currentTime.getTime();
    });

function howlong() {
console.log('last click was: ' + currentTime.getTime() - lastClick + 'ms ago');
}

答案 3 :(得分:0)

使用全局变量:

    var lastEvent;

    $('selector').bind('event', function() {
            lastEvent = new Date().getTime();  //new Date() is important here
    });

答案 4 :(得分:0)

请试试这个:

<script>
var currentTime = new Date().getTime();
var lastClick = "";
var presentClick = "";
document.onclick=function(e){
 var evt=window.event || e 

 lastClick = currentTime;
 presentClick = new Date().getTime();

 idleTime = parseInt(presentClick) - parseInt(lastClick);
 alert("Last Click = "+lastClick+"\n\nPresent Click = "+presentClick+"\n\nIdle Time = "+idleTime+" ms.");

 currentTime = presentClick;

}
</script>