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

Javascript 显示自上次单击以来经过了多长时间?,javascript,jquery,Javascript,Jquery,我想节省用户点击页面的时间。所以我可以稍后返回他用函数单击的时间 我认为它基本上应该是这样工作的: var currentTime = new Date(); var lastClick = currentTime.getTime(); $("body").click(function () { var lastClick = currentTime.getTime(); }); function howlong() { console.log('last click was: ' +

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

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

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。我做错了什么?

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

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');
}
使用全局变量:

    var lastEvent;

    $('selector').bind('event', function() {
            lastEvent = new Date().getTime();  //new Date() is important here
    });
使用全局变量:

    var lastEvent;

    $('selector').bind('event', function() {
            lastEvent = new Date().getTime();  //new Date() is important here
    });
  • 您需要从处理程序中删除
    var
    ,否则您将在本地范围中再次声明
    lastClick
    ,并且您永远不会实际设置您认为是的变量

  • Date
    实例不更新。它的价值将始终是它建造时的价值;每次你现在想要一个新的日期,你都必须做一个新的
    newdate()

  • 考虑到这两个因素,以下各项应起作用:

    var lastClick;
    $("body").click(function () {
        lastClick = (new Date()).getTime();
    });
    
    function howlong() {
        console.log('last click was: ' + ((new Date()).getTime() - lastClick) + 'ms ago');
    }
    
    请注意
    新日期()
    周围的潜在WTF额外
    ()
    。这可以确保构造一个新的日期,并在该日期上调用
    getTime()
    ,而不是调用
    Date().getTime()
    ,然后在该日期上调用
    new
    (这是错误的!)

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

  • 您需要从处理程序中删除
    var
    ,否则您将在本地范围中再次声明
    lastClick
    ,并且您永远不会实际设置您认为是的变量

  • Date
    实例不更新。它的价值将始终是它建造时的价值;每次你现在想要一个新的日期,你都必须做一个新的
    newdate()

  • 考虑到这两个因素,以下各项应起作用:

    var lastClick;
    $("body").click(function () {
        lastClick = (new Date()).getTime();
    });
    
    function howlong() {
        console.log('last click was: ' + ((new Date()).getTime() - lastClick) + 'ms ago');
    }
    
    请注意
    新日期()
    周围的潜在WTF额外
    ()
    。这可以确保构造一个新的日期,并在该日期上调用
    getTime()
    ,而不是调用
    Date().getTime()
    ,然后在该日期上调用
    new
    (这是错误的!)

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

    您修改的代码

    修改后的代码

    请试试这个:

    <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>
    
    
    var currentTime=new Date().getTime();
    var lastClick=“”;
    var presentClick=“”;
    document.onclick=函数(e){
    var evt=window.event | | e
    lastClick=当前时间;
    presentClick=newdate().getTime();
    idleTime=parseInt(presentClick)-parseInt(lastClick);
    警报(“上次单击=“+lastClick+”\n\n当前单击=“+presentClick+”\n\n延迟时间=“+idleTime+”毫秒”);
    currentTime=当前单击;
    }
    
    请尝试以下操作:

    <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>
    
    
    var currentTime=new Date().getTime();
    var lastClick=“”;
    var presentClick=“”;
    document.onclick=函数(e){
    var evt=window.event | | e
    lastClick=当前时间;
    presentClick=newdate().getTime();
    idleTime=parseInt(presentClick)-parseInt(lastClick);
    警报(“上次单击=“+lastClick+”\n\n当前单击=“+presentClick+”\n\n延迟时间=“+idleTime+”毫秒”);
    currentTime=当前单击;
    }
    
    请注意,如果您将“选择器”和“事件”两个词更改为适合本例的内容,您的问题会更好,您需要付出更多努力。请注意,如果您将“选择器”和“事件”两个词更改为适合本例的内容,您的问题会更好,您需要付出更多努力。