How to get time difference between double clicks using jquery?

I want to get the time difference between two clicks on one button. I have this markup

<a href="#">click here</a>

I use this code to get the time difference between two clicks.

var clickedTime = '';
var lastClicked = '';
$('body').on('click', 'a', function(e) {
    var d = new Date();
    clickedTime = lastClicked;
    lastClicked = d.getTime();
    console.log(clickedTime);
    console.log(lastClicked);
});

But he shows the same time in both consoles. So can someone tell me how to get the time difference?

+4
source share
2 answers

You can use Date.prototype.getTime()to get the time of the click event.

var click = 0;
var time;
var difference;
$("a").click(function(){
    var date = new Date();
    click += 1;
    if (click == 2) {
        difference = date.getTime() - time;
        click = 0;
        console.log(difference);
    }
    else
        time = date.getTime();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<a>Please double click on me!</a>
Run codeHide result

Or use the Event.timeStampevent property.

var click = 0;
var time;
var difference;
$("a").click(function(e){
    click += 1;
    if (click == 2) {
        difference = e.timeStamp - time;
        click = 0;
        console.log(difference);
    }
    else
        time = e.timeStamp;
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<a>Please double click on me!</a>
Run codeHide result

Note that codes return differentiation time in milliseconds.

+1

jQuery, x -

<button>Get Time Difference</button>

(function ($) {
 $.fn.clickTimer = function ($param, $numbClicks) {
    function msTotime(ms) {
        var mill = ms % 1000;
        var seconds = Math.floor((ms / 1000) % 60);
        var minutes = Math.floor((ms / (60 * 1000)) % 60);
        switch ($param) {
            case "ms":
                return ms;
                break;
            case "s":
                return seconds;
                break;
            default:
                return [minutes, seconds, mill];
        }
    }
    var counter = 0;
    var Start_Time;
    this.click(function (event) {
        counter++;
        if (counter == $numbClicks) {
            counter = 0;
            var now = event.timeStamp;
            Diff = now - Start_Time;
            console.log(msTotime(Diff));
        } else {
            Start_Time = event.timeStamp;
        }
    });
    return this;
 };
})(jQuery);

:

$(selector).clickTimer(time format , number of clicks);

 $("button").clickTimer("ms", 2);
 // returns time difference in milliseconds for every 2 clicks

 $("button").clickTimer("s", 2);
 // returns time difference in seconds

 $("button").clickTimer(false, 2);
 // returns an array [minutes, seconds, milliseconds]

, . , , , .

+1

Source: https://habr.com/ru/post/1614840/


All Articles