Нужен счетчик обратного отсчета. Вот нашла скрипт Код: (function($){ // Number of seconds in every time division var days = 24*60*60, hours = 60*60, minutes = 60; // Creating the plugin $.fn.countdown = function(prop){ var options = $.extend({ callback : function(){}, timestamp : 0 },prop); var left, d, h, m, s, positions; // Initialize the plugin init(this, options); positions = this.find('.position'); (function tick(){ // Time left left = Math.floor((options.timestamp - (new Date())) / 1000); if(left < 0){ left = 0; } // Number of days left d = Math.floor(left / days); updateDuo(0, 1, d); left -= d*days; // Number of hours left h = Math.floor(left / hours); updateDuo(2, 3, h); left -= h*hours; // Number of minutes left m = Math.floor(left / minutes); updateDuo(4, 5, m); left -= m*minutes; // Number of seconds left s = left; updateDuo(6, 7, s); // Calling an optional user supplied callback options.callback(d, h, m, s); // Scheduling another call of this function in 1s setTimeout(tick, 1000); })(); // This function updates two digit positions at once function updateDuo(minor,major,value){ switchDigit(positions.eq(minor),Math.floor(value/10)%10); switchDigit(positions.eq(major),value%10); } return this; }; function init(elem, options){ elem.addClass('countdownHolder'); // Creating the markup inside the container $.each(['Days','Hours','Minutes','Seconds'],function(i){ $('<span class="count'+this+'">').html( '<div>\ <p class="position">\ <span class="digit static">0</span>\ </p>\ </div>\ <div>\ <p class="position">\ <span class="digit static">0</span>\ </p>\ </div>' ).appendTo(elem); if(this!="Seconds"){ elem.append('<p>:</p><span class="countDiv countDiv'+i+'"></span>'); } }); } // Creates an animated transition between the two numbers function switchDigit(position,number){ var digit = position.find('.digit') if(digit.is(':animated')){ return false; } if(position.data('digit') == number){ // We are already showing this number return false; } position.data('digit', number); var replacement = $('<span>',{ 'class':'digit', css:{ top:0, opacity:0 }, html:number }); // The .static class is added when the animation // completes. This makes it run smoother. digit .before(replacement) .removeClass('static') .animate({top:0,opacity:0},'fast',function(){ digit.remove(); }) replacement .delay(100) .animate({top:0,opacity:1},'fast',function(){ replacement.addClass('static'); }); } })(jQuery); Вот вывод счетчика на экран HTML: <div id="counter"></div> <script> $(function(){ $('#counter').countdown({ timestamp : (new Date(2014, 5, 3)).getTime() + 01*01*01*60*1000 }); }); </script> Вроде работает, но неправильно показывает дни. Подскажите, что можно исправить ?
он правильно работает timestamp : (new Date(2014(год), 5(месяц), 3(число))).getTime() а в плюсе идут часы и секунды, не надо туда дни подставлять
На экран выводит 31 : 06 : 34 : 25 Я так поняла, начиная с конца - это секунды, минуты, часы и что такое 31 ? секунды, минуты, часы показывает правильно, а нужно обязательно и дни. Не поможете, я в JavaScript не очень.
В том-то и проблема, дни почему то показывает не верно. Ставлю timestamp : (new Date(2014, 5, 5)) Завтрашний день, а выводит на экран 31 (осталось дней) , часы,минуты, секунды - правельно. Как убрать тройку ? из числа 31 Ставила 12 число - это через 8 дней => показывает осталось 38 дней (не знаю откуда берется )
(new Date(2014, 5, 5)) это не завтра - это через месяц к сожаления ктото посчитал что дни в Date будут идти от 1 до 31 а вот месяцы от 0(январь) до 11 )декабрь(
исправить это нельзя, так уж сделан javascript вот фикс что б нормально писать месяц по человечески http://jsfiddle.net/b5vWk/1/ , тут тут месяц 5 будет считаться за май, а не за июнь