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ハンドラー内で fromを削除する必要があります。そうしないと、ローカル スコープで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

これを試してください:

<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 に答える
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 に答える