Okies, thanks for this. I’ve now made the corrections - I see what went wrong
Now, because it’s Tuesday, I thought it would be fun to test and pretend the weekend goes from 17:00 on a Monday to 23:59 on a Tuesday. Unfortunately, the placement of that if statement isn’t causing the timer to say “It’s the weekend” today (Tuesday), it’s just giving me a “6 days, 2hrs, etc, etc” read out.
I’ll be honest, I’m really thankful for the help but this whole thing has me massively confused!
I’ve pasted the two files (both head.js and body.js) below. Head.js seems to look after the displaying of “It’s the weekend”, so the thing in body.js seems kinda pointless.
Head.js
function cdtime(container, targetdate){
if (!document.getElementById || !document.getElementById(container)) return
this.container=document.getElementById(container)
this.currentTime=new Date()
var now=new Date();
var Y = now.getFullYear();
var m = now.getMonth();
var d = now.getDate();
var date = new Date();
while (date.getDay() != 1) {
date = new Date(Y,m,++d);
}
this.targetdate = new Date(Y,m,d,17,0,0);
this.timesup=false
this.updateTime()
}
cdtime.prototype.updateTime=function(){
var thisobj=this
this.currentTime.setSeconds(this.currentTime.getSeconds()+1)
setTimeout(function(){thisobj.updateTime()}, 1000) //update time every second
}
cdtime.prototype.displaycountdown=function(baseunit, functionref){
this.baseunit=baseunit
this.formatresults=functionref
this.showresults()
}
cdtime.prototype.showresults=function(){
var thisobj=this
var timediff=(this.targetdate-this.currentTime)/1000 //difference btw target date and current date, in seconds
if (timediff<0){ //if time is up
this.timesup=true
this.container.innerHTML=this.formatresults()
return
}
var oneMinute=60 //minute unit in seconds
var oneHour=6060 //hour unit in seconds
var oneDay=606024 //day unit in seconds
var dayfield=Math.floor(timediff/oneDay)
var hourfield=Math.floor((timediff-dayfieldoneDay)/oneHour)
var minutefield=Math.floor((timediff-dayfieldoneDay-hourfieldoneHour)/oneMinute)
var secondfield=Math.floor((timediff-dayfieldoneDay-hourfieldoneHour-minutefieldoneMinute))
if (this.baseunit==“hours”){ //if base unit is hours, set “hourfield” to be topmost level
hourfield=dayfield24+hourfield
dayfield=“n/a”
}
else if (this.baseunit==“minutes”){ //if base unit is minutes, set “minutefield” to be topmost level
minutefield=dayfield2460+hourfield*60+minutefield
dayfield=hourfield=“n/a”
}
else if (this.baseunit==“seconds”){ //if base unit is seconds, set “secondfield” to be topmost level
var secondfield=timediff
dayfield=hourfield=minutefield=“n/a”
}
this.container.innerHTML=this.formatresults(dayfield, hourfield, minutefield, secondfield)
setTimeout(function(){thisobj.showresults()}, 1000) //update results every second
}
/////CUSTOM FORMAT OUTPUT FUNCTIONS BELOW//////////////////////////////
//Create your own custom format function to pass into cdtime.displaycountdown()
//Use arguments[0] to access “Days” left
//Use arguments[1] to access “Hours” left
//Use arguments[2] to access “Minutes” left
//Use arguments[3] to access “Seconds” left
//The values of these arguments may change depending on the “baseunit” parameter of cdtime.displaycountdown()
//For example, if “baseunit” is set to “hours”, arguments[0] becomes meaningless and contains “n/a”
//For example, if “baseunit” is set to “minutes”, arguments[0] and arguments[1] become meaningless etc
function formatresults(){
if (this.timesup==false){//if target date/time not yet met
var displaystring=arguments[0]+" days, “+arguments[1]+” hours, and “+arguments[2]+” minutes left until the weekend"
}
else{ //else if target date/time met
var displaystring=“The weekend is here!”
}
return displaystring
}
// JavaScript Document
and body.js
var d = new Date();
if (d.getDay() > 1 && d.getHours() >= 17 && d.getDay() <= 2 && d.getHours() <= 23 && d.getMinutes() < 59) {
document.getElementById(“countdowncontainer”).innerHTML = “It’s the weekend”;
} else {
var futuredate=new cdtime(“countdowncontainer”)
futuredate.displaycountdown(“days”, formatresults)
}