Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Таймер обратного отсчета (https://javascript.ru/forum/project/42993-tajjmer-obratnogo-otscheta.html)

kel1mc 17.11.2013 20:51

Таймер обратного отсчета
 
Сайт elky2013.ru

Нужно чтоб таймер считал дни,часы и минуты.
Сейчас он считает вместе с месяцами, но они скрыты, поэтому выходит, что до НГ осталось меньше месяца.

Скрипт вида

(function($) {
$.fn.countdown = function (date, options) {
options = $.extend({
lang: {
years: ['год', 'года', 'лет'],
months: ['месяц', 'месяца', 'месяцев'],
days: ['день', 'дня', 'дней'],
hours: ['час', 'часа', 'часов'],
minutes: ['минута', 'минуты', 'минут'],
seconds: ['секунда', 'секунды', 'секунд'],
plurar: function(n) {
return (n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
}
},
prefix: "Осталось: ",
finish: "Всё"
}, options);

var timeDifference = function(begin, end) {
if (end < begin) {
return false;
}
var diff = {
//	 seconds: [end.getSeconds() - begin.getSeconds(), 60],
minutes: [end.getMinutes() - begin.getMinutes(), 60],
hours: [end.getHours() - begin.getHours(), 24],
days: [end.getDate() - begin.getDate(), new Date(begin.getYear(), begin.getMonth() + 1, 0).getDate()],
//	 months: [end.getMonth() - begin.getMonth(), 12],
//	 years: [end.getYear() - begin.getYear(), 0]
};
var result = new Array();
var flag = false;
for (i in diff) {
if (flag) {
diff[i][0]--;
flag = false;
}
if (diff[i][0] < 0) {
flag = true;
diff[i][0] += diff[i][1];
}
if (diff[i][0]<10) diff[i][0]="0"+diff[i][0];
result.push('<span>' + diff[i][0] + ' <span>' + options.lang[i][options.lang.plurar(diff[i][0])]+'</span></span>');
}
return result.reverse().join(' ');
};
var elem = $(this);
var timeUpdate = function () {
var s = timeDifference(new Date(), date);
if (s.length) {
elem.html('<div class="timer-title">'+options.prefix+'</div>' + s);
} else {
clearInterval(timer);
elem.html('<div class="timer-title">'+options.finish+'</div>');
}
};
timeUpdate();
var timer = setInterval(timeUpdate, 1000);
};
})(jQuery);

kel1mc 17.11.2013 23:47

есть советы или готовое решение?:)

BETEPAH 18.11.2013 00:57

Можете перефразировать вопрос?
Нужно, чтоб считало до НГ: 44 дня, 20 часов, 30 минут?
Или как?

kel1mc 18.11.2013 11:17

Цитата:

Сообщение от BETEPAH (Сообщение 281582)
Можете перефразировать вопрос?
Нужно, чтоб считало до НГ: 44 дня, 20 часов, 30 минут?
Или как?

Да, чтоб так считал. Можно что-то сделать?

kel1mc 18.11.2013 11:18

Подпись не увидила, извините))))

ksa 18.11.2013 11:26

Цитата:

Сообщение от kel1mc
до НГ осталось

Знать скро начнут спрашивать про снежинки и оленей... :D

kel1mc 18.11.2013 13:09

Есть решение?)))

ksa 18.11.2013 13:12

Цитата:

Сообщение от kel1mc
Есть решение?

Про оленей со снежинками? Да каждый год про это спрашивают...

kel1mc 18.11.2013 15:31

Ваш смайлин на аватарку в тему)))
Решение про скрипт

ksa 18.11.2013 15:57

Цитата:

Сообщение от kel1mc
Решение про скрипт

Оно мне забесплатно не интересно... :no:

kel1mc 18.11.2013 23:24

Цитата:

Сообщение от BETEPAH (Сообщение 281582)
Можете перефразировать вопрос?
Нужно, чтоб считало до НГ: 44 дня, 20 часов, 30 минут?
Или как?


Сможете помочь в этом?

BETEPAH 18.11.2013 23:55

Цитата:

Сообщение от kel1mc
Сможете помочь в этом?

Честно говоря, не знаю, что за массив у вас создается, но количество дней до НГ можно например вот так посчитать:
days = Math.round(((new Date("January 1, 2014")).getTime() - (new Date()).getTime())/(24*60*60*1000));
alert(days);

kel1mc 18.11.2013 23:59

Цитата:

Сообщение от BETEPAH (Сообщение 281733)
Честно говоря, не знаю, что за массив у вас создается, но количество дней до НГ можно например вот так посчитать:
days = Math.round(((new Date("January 1, 2014")).getTime() - (new Date()).getTime())/(24*60*60*1000));
alert(days);

Вместо чего это вставить?

рони 19.11.2013 00:28

таймер до нового года осталось
 
kel1mc,
:cray: :cray: :cray: запятая в конце 27 строки у вас в 1 посте очень опасная :write:

<!DOCTYPE HTML>
<html>

  <head>
    <meta charset="utf-8">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
    <script>
    (function($) {
$.fn.countdown = function (date, options) {
options = $.extend({
lang: {
years: ['год', 'года', 'лет'],
months: ['месяц', 'месяца', 'месяцев'],
days: ['день', 'дня', 'дней'],
hours: ['час', 'часа', 'часов'],
minutes: ['минута', 'минуты', 'минут'],
seconds: ['секунда', 'секунды', 'секунд'],
plurar: function(n) {
return (n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
}
},
prefix: "Осталось: ",
finish: "Всё"
}, options);

var timeDifference = function(begin, end) {
if (end < begin) {
return false;
}
var diff = {
//	 seconds: [end.getSeconds() - begin.getSeconds(), 60],
minutes: [end.getMinutes() - begin.getMinutes(), 60],
hours: [end.getHours() - begin.getHours(), 24],
days: [Math.round((date.getTime() - (new Date()).getTime())/(24*60*60*1000)),0]
//days: [end.getDate() - begin.getDate(), new Date(begin.getYear(), begin.getMonth() + 1, 0).getDate()],
//months: [end.getMonth() - begin.getMonth(), 12]//,
//	 years: [end.getYear() - begin.getYear(), 0]
};
var result = new Array();
var flag = false;
for (i in diff) {
if (flag) {
diff[i][0]--;
flag = false;
}
if (diff[i][0] < 0) {
flag = true;
diff[i][0] += diff[i][1];
}
if (diff[i][0]<10) diff[i][0]="0"+diff[i][0];
result.push('<span>' + diff[i][0] + ' <span>' + options.lang[i][options.lang.plurar(diff[i][0])]+'</span></span>');
}
return result.reverse().join(' ');
};
var elem = $(this);
var timeUpdate = function () {
var s = timeDifference(new Date(), date);
if (s.length) {
elem.html('<div class="timer-title">'+options.prefix+'</div>' + s);
} else {
clearInterval(timer);
elem.html('<div class="timer-title">'+options.finish+'</div>');
}
};
timeUpdate();
var timer = setInterval(timeUpdate, 1000);
};
})(jQuery);

      $(document).ready(function () {
          var date = new Date((new Date).getFullYear()+1, 0, 1, 0, 0, 0, 0 )
          $('#new_year').countdown(date);

        });

    </script>
  </head>

  <body>

    <div id="new_year">2014</div>
  </body>

</html>

kel1mc 19.11.2013 19:07

Мне заменить только 27 строку?

Цитата:

Сообщение от рони (Сообщение 281738)
kel1mc,
:cray: :cray: :cray: запятая в конце 27 строки у вас в 1 посте очень опасная :write:

<!DOCTYPE HTML>
<html>

  <head>
    <meta charset="utf-8">
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
    <script>
    (function($) {
$.fn.countdown = function (date, options) {
options = $.extend({
lang: {
years: ['год', 'года', 'лет'],
months: ['месяц', 'месяца', 'месяцев'],
days: ['день', 'дня', 'дней'],
hours: ['час', 'часа', 'часов'],
minutes: ['минута', 'минуты', 'минут'],
seconds: ['секунда', 'секунды', 'секунд'],
plurar: function(n) {
return (n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);
}
},
prefix: "Осталось: ",
finish: "Всё"
}, options);

var timeDifference = function(begin, end) {
if (end < begin) {
return false;
}
var diff = {
//	 seconds: [end.getSeconds() - begin.getSeconds(), 60],
minutes: [end.getMinutes() - begin.getMinutes(), 60],
hours: [end.getHours() - begin.getHours(), 24],
days: [Math.round((date.getTime() - (new Date()).getTime())/(24*60*60*1000)),0]
//days: [end.getDate() - begin.getDate(), new Date(begin.getYear(), begin.getMonth() + 1, 0).getDate()],
//months: [end.getMonth() - begin.getMonth(), 12]//,
//	 years: [end.getYear() - begin.getYear(), 0]
};
var result = new Array();
var flag = false;
for (i in diff) {
if (flag) {
diff[i][0]--;
flag = false;
}
if (diff[i][0] < 0) {
flag = true;
diff[i][0] += diff[i][1];
}
if (diff[i][0]<10) diff[i][0]="0"+diff[i][0];
result.push('<span>' + diff[i][0] + ' <span>' + options.lang[i][options.lang.plurar(diff[i][0])]+'</span></span>');
}
return result.reverse().join(' ');
};
var elem = $(this);
var timeUpdate = function () {
var s = timeDifference(new Date(), date);
if (s.length) {
elem.html('<div class="timer-title">'+options.prefix+'</div>' + s);
} else {
clearInterval(timer);
elem.html('<div class="timer-title">'+options.finish+'</div>');
}
};
timeUpdate();
var timer = setInterval(timeUpdate, 1000);
};
})(jQuery);

      $(document).ready(function () {
          var date = new Date((new Date).getFullYear()+1, 0, 1, 0, 0, 0, 0 )
          $('#new_year').countdown(date);

        });

    </script>
  </head>

  <body>

    <div id="new_year">2014</div>
  </body>

</html>


kel1mc 19.11.2013 19:12

оооо! Вставила вашу строчку
days: [Math.round((date.getTime() - (new Date()).getTime())/(24*60*60*1000)),0]


Скрыла days что были и все получилось!!!! Спасибо огромное!!!!:victory: :dance:


Часовой пояс GMT +3, время: 19:10.