Please post a link to a demo with my code, so I can check it out.
But, as I said, I'm unfamiliar with that syntax. I tried to follow the same usage as shown in your post. If you or I made a typo, or I misunderstood what's allowed in the {} brackets and the syntax required in there, that would explain it. What CMS are you using?
Another approach you could take is trying to use the concept as I've explained it to you in my previous two posts, only with the correct syntax for your system.
Here's a working all javascript version of most of the concept that might assist you in that effort (requires no server side code):
Code:
<!DOCTYPE html>
<html>
<head>
<title>CountDown - 3 Days from Now - Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript">
/***********************************************
* Dynamic Countdown script- © Dynamic Drive (http://www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for this script and 100s more.
***********************************************/
function cdtime(container, targetdate){
if (!document.getElementById || !document.getElementById(container)) return
this.container=document.getElementById(container)
this.currentTime=new Date()
this.targetdate=new Date(targetdate)
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=60*60 //hour unit in seconds
var oneDay=60*60*24 //day unit in seconds
var dayfield=Math.floor(timediff/oneDay)
var hourfield=Math.floor((timediff-dayfield*oneDay)/oneHour)
var minutefield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour)/oneMinute)
var secondfield=Math.floor((timediff-dayfield*oneDay-hourfield*oneHour-minutefield*oneMinute))
if (this.baseunit=="hours"){ //if base unit is hours, set "hourfield" to be topmost level
hourfield=dayfield*24+hourfield
dayfield="n/a"
}
else if (this.baseunit=="minutes"){ //if base unit is minutes, set "minutefield" to be topmost level
minutefield=dayfield*24*60+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 "+arguments[2]+" minutes "+arguments[3]+" seconds left until Thread Close: " + this.targetdate.toLocaleString()
}
else{ //else if target date/time met
var displaystring="Future date is here!"
}
return displaystring
}
</script>
</head>
<body>
<div id="countdowncontainer"></div>
<script type="text/javascript">
var futuredate=new cdtime("countdowncontainer", new Date().getTime() + 86400 * 3000)
futuredate.displaycountdown("days", formatresults)
</script>
</body>
</html>
Notice in particular this line:
Code:
var futuredate=new cdtime("countdowncontainer", new Date().getTime() + 86400 * 3000)
In general terms, to make that work with server side code, it would be:
Code:
var futuredate=new cdtime("countdowncontainer", new Date().getTime() + [token to open server side code] [any required command like echo, if any in this context to get the following to become part of the document] [token for unquoted integer representing server side timestamp in seconds for closing time] - [token for unquoted integer representing current server side time in seconds][required terminus like ; if any] [token to close serverside code] * 1000)
Or, using valid PHP code, one could change:
Code:
<div id="countdowncontainer"></div>
<script type="text/javascript">
var futuredate=new cdtime("countdowncontainer", new Date().getTime() + 86400 * 3000)
futuredate.displaycountdown("days", formatresults)
</script>
to:
PHP Code:
<div id="countdowncontainer"></div>
<script type="text/javascript">
<?php
$close = time() + 86400 * 3;
?>
var futuredate=new cdtime("countdowncontainer", new Date().getTime() + <?php echo $close - time(); ?> * 1000)
futuredate.displaycountdown("days", formatresults)
</script>
Which also works, provided it's on a regular PHP enabled server.
Bookmarks