Created
March 11, 2020 18:05
-
-
Save alfahami/c5383552482ec77653e263c89ebcf155 to your computer and use it in GitHub Desktop.
countdown timer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function($) { | |
$.fn.countdown = function(options, callback) { | |
//custom 'this' selector | |
thisEl = $(this); | |
// array of custom settings | |
var settings = { | |
date: null, | |
format: null | |
}; | |
// append the settings array to options | |
if (options) { | |
$.extend(settings, options); | |
} | |
//create the countdown processing function | |
function countdown_proc() { | |
var eventDate = Date.parse(settings.date) / 1000; | |
var currentDate = Math.floor($.now() / 1000); | |
if (eventDate <= currentDate) { | |
callback.call(this); | |
clearInterval(interval); | |
} | |
var seconds = eventDate - currentDate; | |
var days = Math.floor(seconds / (60 * 60 * 24)); | |
//calculate the number of days | |
seconds -= days * 60 * 60 * 24; | |
//update the seconds variable with number of days removed | |
var hours = Math.floor(seconds / (60 * 60)); | |
seconds -= hours * 60 * 60; | |
//update the seconds variable with number of hours removed | |
var minutes = Math.floor(seconds / 60); | |
seconds -= minutes * 60; | |
//update the seconds variable with number of minutes removed | |
//conditional statements | |
if (days == 1) { | |
thisEl.find(".timeRefDays").text("day"); | |
} else { | |
thisEl.find(".timeRefDays").text("jours"); | |
} | |
if (hours == 1) { | |
thisEl.find(".timeRefHours").text("hour"); | |
} else { | |
thisEl.find(".timeRefHours").text("heures"); | |
} | |
if (minutes == 1) { | |
thisEl.find(".timeRefMinutes").text("minute"); | |
} else { | |
thisEl.find(".timeRefMinutes").text("minutes"); | |
} | |
if (seconds == 1) { | |
thisEl.find(".timeRefSeconds").text("second"); | |
} else { | |
thisEl.find(".timeRefSeconds").text("secondes"); | |
} | |
//logic for the two_digits ON setting | |
if (settings.format == "on") { | |
days = String(days).length >= 2 ? days : "0" + days; | |
hours = String(hours).length >= 2 ? hours : "0" + hours; | |
minutes = String(minutes).length >= 2 ? minutes : "0" + minutes; | |
seconds = String(seconds).length >= 2 ? seconds : "0" + seconds; | |
} | |
//update the countdown's html values. | |
thisEl.find(".days").text(days); | |
thisEl.find(".hours").text(hours); | |
thisEl.find(".minutes").text(minutes); | |
thisEl.find(".seconds").text(seconds); | |
} | |
//run the function | |
countdown_proc(); | |
//loop the function | |
interval = setInterval(countdown_proc, 1000); | |
}; | |
})(jQuery); | |
//Provide the plugin settings | |
$("#countdown").countdown( | |
{ | |
//The countdown end date | |
date: "13 April 2020 00:00:00", | |
// on (03:07:52) | off (3:7:52) - two_digits set to ON maintains layout consistency | |
format: "on" | |
}, | |
function() { | |
// This will run when the countdown ends | |
alert("We're Out Now"); | |
} | |
); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment