我想节省用户点击页面的时间。所以我可以稍后返回他用功能点击的时间。
我认为它基本上应该是这样的:
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.我做错了什么?
答案 0 :(得分:5)
您需要从处理程序中删除var
,否则您在本地范围内再次声明lastClick
,而您实际上从未实际设置你认为你的变量。
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');
}
请注意()
周围可能的 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>