User:ToxiBoi/LiveCountdown.js: Difference between revisions
Content deleted Content added
[v1.2] Fix live |
m [v1.3] Error if NaN |
||
Line 6: | Line 6: | ||
now = new Date().getTime(); |
now = new Date().getTime(); |
||
distance = endDate - now; |
distance = endDate - now; |
||
⚫ | |||
if (isNaN(distance)) { |
|||
⚫ | |||
// Something went terribly wrong with parsing the dates. |
|||
var hours = Math.floor( |
|||
// Display error |
|||
⚫ | |||
index.innerHTML = '<strong class="error">[LiveCountdown] Parsing date from "'+ index.getAttribute("data-end") +'" returned NaN, check parameters "month/day/year/customdate"</strong>'; |
|||
⚫ | |||
} else { |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
var hours = Math.floor( |
|||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
// Display the result |
|||
⚫ | |||
⚫ | |||
"</b> hours, <b>" + |
|||
"There are <b>" + |
|||
days + |
|||
"</b> days, <b>" + |
|||
hours + |
|||
"</b> hours, <b>" + |
|||
minutes + |
|||
⚫ | |||
⚫ | |||
⚫ | |||
index.getAttribute("data-event") + |
|||
⚫ | |||
} |
|||
// If the count down is finished, refresh |
// If the count down is finished, refresh |
Revision as of 04:30, 17 April 2020
var MainLoop = function (index) {
var RefreshingAlready = false;
setInterval(function () {
// Setup again
endDate = new Date(index.getAttribute("data-end")).getTime();
now = new Date().getTime();
distance = endDate - now;
if (isNaN(distance)) {
// Something went terribly wrong with parsing the dates.
// Display error
index.innerHTML = '<strong class="error">[LiveCountdown] Parsing date from "'+ index.getAttribute("data-end") +'" returned NaN, check parameters "month/day/year/customdate"</strong>';
} else {
// Time calculations for days, hours, minutes and seconds (copied from W3Schools)
var days = Math.floor(distance / (1000 * 60 * 60 * 24));
var hours = Math.floor(
(distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)
);
var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
var seconds = Math.floor((distance % (1000 * 60)) / 1000);
// Display the result
index.innerHTML =
"There are <b>" +
days +
"</b> days, <b>" +
hours +
"</b> hours, <b>" +
minutes +
"</b> minutes, and <b>" +
seconds +
"</b> seconds until " +
index.getAttribute("data-event") +
".";
}
// If the count down is finished, refresh
if (distance < 0) {
index.innerHTML = "Countdown expired, refreshing...";
if (!RefreshingAlready) {
document.location.reload();
RefreshingAlready = true;
}
}
}, 1000);
};
var counts = document.getElementsByClassName("toxicountdown");
if (counts.length > 0) {
for (var i = 0; i < counts.length; i++) {
counts[i].innerHTML = "Loading countdown...";
var endDate = new Date(counts[i].getAttribute("data-end")).getTime();
var now = new Date().getTime();
var distance = endDate - now;
if (distance < 0) {
counts[i].innerHTML = "The countdown finished.";
} else {
MainLoop(counts[i]);
}
}
} else {
console.log("[LiveCountdown] No countdown widgets detected.");
}