Instead:
setTimeout("CountBack('" + myDiv + "'," + (secs-1) + ");", 990);
Better use an anonymous function:
setTimeout(function (){CountBack(myDiv, secs - 1);}, 990);
Option A (layout is set manually):

View the jsFiddle working example
html
<div id="timer1"> <div id="timer-header">До конца акции осталось:</div> <div id="days"> <div class="left"></div> <div class="right"></div> <div class="delimiter">:</div> <div id="title-days">дни</div> </div> <div id="hours"> <div class="left"></div> <div class="right"></div> <div class="delimiter">:</div> <div id="title-hours">часы</div> </div> <div id="minutes"> <div class="left"></div> <div class="right"></div> <div class="delimiter">:</div> <div id="title-minutes">минуты</div> </div> <div id="seconds"> <div class="left"></div> <div class="right"></div> <div id="title-seconds">секунды</div> </div> </div>
css
#timer1 { display:table-cell; } #timer1 > div:first-child { margin:0; } #timer1 div { display:inline-block; } #timer-header { display:block!important; padding-bottom:15px; text-align:center; } #timer1 div[id^="title-"] { display:block; text-align:center; margin-left:-7px; width:100%; } #timer1 #title-seconds { margin:0; } .left, .right, .delimiter { font-size:32px; } .left, .right { background-color:#61890C; color:white; padding:5px; } .left { margin-right:2px; } .delimiter { padding-left:0; }
javascript
StartCountDown("timer1", "07/31/2013 00:00"); function StartCountDown(myDiv, myTargetDate) { var dthen = new Date(myTargetDate); var dnow = new Date(); ddiff = new Date(dthen - dnow); gsecs = Math.floor(ddiff.valueOf() / 1000); CountBack(myDiv, gsecs); } function Calcage(secs, num1, num2) { s = ((Math.floor(secs / num1)) % num2).toString(); if (s.length < 2) { s = "0" + s; } return (s); } function CountBack(myDiv, secs) { var timeArr = [], holder; if (secs > 0) { timeArr.days = Calcage(secs, 86400, 100000).split(''); timeArr.hours = Calcage(secs, 3600, 24).split(''); timeArr.minutes = Calcage(secs, 60, 60).split(''); timeArr.seconds = Calcage(secs, 1, 60).split(''); Object.keys(timeArr).map(function (key) { holder = document.getElementById(key); for (var i = 0; i < holder.childNodes.length; ++i) { switch (holder.childNodes[i].className) { case "left": holder.childNodes[i].innerHTML = timeArr[key][0]; break; case "right": holder.childNodes[i].innerHTML = timeArr[key][2]; break; default: break; } } }); setTimeout(function () { CountBack(myDiv, secs - 1); }, 990); } else { document.getElementById(myDiv).innerHTML = "Auction Over"; } }
Option B (layout generated by the script):

View the jsFiddle working example
html
<div id="timer1"></div>
css
#timer1 { display:table-cell; } #timer1 > div { margin-left: 5px; } #timer1 > div:first-child { margin: 0; } #timer1 div { display:inline-block; } #timer-header { display:block!important; padding-bottom:15px; text-align:center; } #timer1 div[id^="title-"] { display:block; text-align:center; margin-left:-7px; width:100%; } #timer1 #title-seconds { margin:0; } .left, .right, .delimiter { font-size:32px; } .left, .right { background-color:#61890C; color:white; padding:5px; } .left { margin-right: 5px; } .delimiter { padding-left:5px; }
javascript
//Создаем заголовок для таймера createElements("timer1", "timer-header", false, true); //Создаем блоки, которые будут содержать [дни, часы, минуты, секунды] //Блоки будут созданы внутри элемента с id "timer1" ["days", "hours", "minutes", "seconds"].forEach(function (id) { createElements("timer1", id, false, true); //Для каждого блока [дни, часы, минуты, секунды] //Создаем дочерние блоки //Они будут содержать левую и правую цифру соответственно ["left", "right"].forEach(function (child_id) { createElements(id, child_id, true, true); }); //Создаем блоки для разделителей if (id !== "seconds") { createElements(id, 'delimiter', true, true); } //Создаем подписи для значений createElements(id, 'title-' + id, false, true); }); //Задаем заголовок var header = document.getElementById('timer-header'); header.innerHTML = "До конца акции осталось:"; //Выставляем разделители (в примере двоеточие) var delimiter = Array.prototype.slice.call(document.getElementsByClassName('delimiter')); delimiter.forEach(function (div) { div.innerHTML = ":"; }); //Задаем подписи к значениям таймера var days = document.getElementById('title-days'); var hours = document.getElementById('title-hours'); var minutes = document.getElementById('title-minutes'); var seconds = document.getElementById('title-seconds'); days.innerHTML = "дни"; hours.innerHTML = "часы"; minutes.innerHTML = "минуты"; seconds.innerHTML = "секунды"; StartCountDown("timer1", "07/31/2013 00:00"); function insertAfter(referenceNode, newNode) { referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling); } //++ родительский элемент; //++ идентификатор блока (берется из обрабатываемого массива); //++ true - class="идентификатор блока"; false - id="идентификатор блока"; //++ true - СОЗДАТЬ ВНУТРИ родителя; false - ПРИКРЕПИТЬ ПОСЛЕ родителя function createElements(parent_id, id, create_class, create_child) { create_class = typeof create_class !== 'undefined' ? !! create_class : false; create_child = typeof create_child !== 'undefined' ? !! create_child : false; var div = document.createElement('div'); var parent = document.getElementById(parent_id); if (create_class) { div.className = id; } else { div.id = id; } if (create_child) { parent.appendChild(div); } else { insertAfter(parent, div); } } function StartCountDown(myDiv, myTargetDate) { var dthen = new Date(myTargetDate); var dnow = new Date(); ddiff = new Date(dthen - dnow); gsecs = Math.floor(ddiff.valueOf() / 1000); CountBack(myDiv, gsecs); } function Calcage(secs, num1, num2) { s = ((Math.floor(secs / num1)) % num2).toString(); if (s.length < 2) { s = "0" + s; } return (s); } function CountBack(myDiv, secs) { var timeArr = [], holder; if (secs > 0) { timeArr.days = Calcage(secs, 86400, 100000).split(''); timeArr.hours = Calcage(secs, 3600, 24).split(''); timeArr.minutes = Calcage(secs, 60, 60).split(''); timeArr.seconds = Calcage(secs, 1, 60).split(''); Object.keys(timeArr).map(function (key) { holder = document.getElementById(key); for (var i = 0; i < holder.childNodes.length; ++i) { switch (holder.childNodes[i].className) { case "left": holder.childNodes[i].innerHTML = timeArr[key][0]; break; case "right": holder.childNodes[i].innerHTML = timeArr[key][4]; break; default: break; } } }); setTimeout(function () { CountBack(myDiv, secs - 1); }, 990); } else { document.getElementById(myDiv).innerHTML = "Auction Over"; } }