1

我想节省用户点击页面的时间。所以我可以稍后返回他多久前点击了一个函数。

我认为它基本上应该像这样工作:

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

但是我不能让它工作。howlong 一直返回 0。我做错了什么?

4

5 回答 5

5
  1. 您需要var从处理程序中删除 ,否则您将在本地范围内lastClick 再次声明,并且您永远不会真正设置您认为的变量。

  2. 实例Date更新。它的价值永远是它被建造的时间;new Date()每次你现在想要一个新的时,你都必须做一个新的。

考虑到这两者,以下应该起作用;

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

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

注意. _ ()_ new Date()这确保了一个新的 Date 被构造,getTime()并被调用,而不是Date().getTime()被调用,然后new被调用(这是错误的!)。

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

于 2012-09-28T09:43:09.007 回答
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');
}​
于 2012-09-28T09:46:42.060 回答
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');
}
于 2012-09-28T09:41:38.803 回答
0

使用全局变量:

    var lastEvent;

    $('selector').bind('event', function() {
            lastEvent = new Date().getTime();  //new Date() is important here
    });
于 2012-09-28T09:41:44.247 回答
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>
于 2012-09-28T09:51:55.093 回答