JavaScript Countdown Timer
Mar 06, 2023
By
Lori Dresner
Hi all. I need to add a countdown timer to one of my Storyline slides so people don't skip through it too quickly. I already have a JavaScript code I've borrowed from someone for a different project, but it seems that the page I got it from no longer exists, so I cannot figure out how to change it. It is currently set to 35 seconds; how would I change it to 5 minutes? Thanks in advance!
function zeros(i) {
if (i < 10) {
i = "0" + i;
}
return i;
}
var counter = setInterval(timer, 1000);
var fin="Done";
var player = GetPlayer();
var count = player.GetVar("Countdown_Duration");
function timer() {
count = count - 1;
minutes = zeros(Math.floor(count / 60));
seconds = zeros(count % 60);
if (count == 0){
player.SetVar("Countdown_Finished",fin);
}
if (count < 0) {
clearInterval(counter);
return;
}
totalTime = minutes + ':' + seconds;
player.SetVar("Countdown_Display",totalTime);
}
minutes = zeros(Math.floor(count / 60));
seconds = zeros(count % 60);
if (count == 0){
player.SetVar("Countdown_Finished",fin);
}
if (count < 0) {
clearInterval(counter);
return;
}
totalTime = minutes + ':' + seconds;
player.SetVar("Countdown_Display",totalTime);
11 Replies
Hi there, I made a few changes to your existing code. I set the countdown duration to 5 minutes (300 seconds) by assigning
count
the value of 300.function zeros(i) {
if (i < 10) {
i = "0" + i;
}
return i;
}
var counter = setInterval(timer, 1000);
var fin = "Done";
var player = GetPlayer();
var count = player.GetVar("Countdown_Duration");
function timer() {
count = count - 1;
minutes = zeros(Math.floor(count / 60));
seconds = zeros(count % 60);
if (count <= 0) {
player.SetVar("Countdown_Finished", fin);
clearInterval(counter);
return;
}
totalTime = minutes + ':' + seconds;
player.SetVar("Countdown_Display", totalTime);
}
count = 300; // Set the countdown duration to 5 minutes (300 seconds)
minutes = zeros(Math.floor(count / 60));
seconds = zeros(count % 60);
totalTime = minutes + ':' + seconds;
player.SetVar("Countdown_Display", totalTime);
Try this and let me know if this works.
This works perfectly! Thank you!
You're welcome!!
Hello there, apologies for jumping in here so late but this was exactly what I have been looking for!
I changed it to a 30 minute countdown which works great.
The only thing is the countdown ends and stays on 00:01 is there a way to make it end on 00:00?
Many thanks in advance.
Hello Kev, in the above code you modify the "timer()" function as follows:
function zeros(i) {
if (i < 10) {
i = "0" + i;
}
return i;
}
var counter = setInterval(timer, 1000);
var fin = "Done";
var player = GetPlayer();
var count = player.GetVar("Countdown_Duration");
function timer() {
count = count - 1;
if (count < 0) {
count = 0; // Set the countdown to 0 when it goes below 0
}
minutes = zeros(Math.floor(count / 60));
seconds = zeros(count % 60);
if (count <= 0) {
player.SetVar("Countdown_Finished", fin);
clearInterval(counter);
return;
}
totalTime = minutes + ':' + seconds;
player.SetVar("Countdown_Display", totalTime);
}
count = 300; // Set the countdown duration to 5 minutes (300 seconds)
minutes = zeros(Math.floor(count / 60));
seconds = zeros(count % 60);
totalTime = minutes + ':' + seconds;
player.SetVar("Countdown_Display", totalTime);
Try this and let me know if this works.
Hi Sandeep, thank you so much for getting back to me on this.
Unfortunately, that didn't work, it still just stops at 00:01
My bad, let me take a closer look and see what I can do better with the code and make sure it stops at 00:00. Please accept my sincere apologies.
No worries at all, your help is very much appreciated. I'm fairly new to Java so this is all great learning for me :)
Hello Kev, would you be willing to share your project file here so that I can take a closer look and see if I can adjust the timer to stop at 00:00? I just want to give it a try at my end and try to provide you with an alternative code.
Thank you!!
Kev would you mind trying the below code once again before sharing your SL file? If this doesn't work too, I request you to please share your SL file.
function zeros(i) {
if (i < 10) {
i = "0" + i;
}
return i;
}
var counter = setInterval(timer, 1000);
var fin = "Done";
var player = GetPlayer();
var count = player.GetVar("Countdown_Duration");
function timer() {
count = count - 1;
minutes = zeros(Math.floor(count / 60));
seconds = zeros(count % 60);
if (count <= 0) {
player.SetVar("Countdown_Finished", fin);
clearInterval(counter);
return;
}
totalTime = minutes + ':' + seconds;
player.SetVar("Countdown_Display", totalTime);
if (minutes == "00" && seconds == "00") {
clearInterval(counter);
}
}
count = 300; // Set the countdown duration to 5 minutes (300 seconds)
minutes = zeros(Math.floor(count / 60));
seconds = zeros(count % 60);
totalTime = minutes + ':' + seconds;
player.SetVar("Countdown_Display", totalTime);
Thank you!!
Hi Sandeep, thank you for taking another look at this. Unfortunately, that code didn't work. I've attached the project file for you.
Thank you again for your help on this. it is very much appreciated.