Задать вопрос
@Stairdeck

Как сделать обратный отсчет, а затем появление кнопочки?

Здравствуйте!
Нужна такая фишка на js, сначала идет надпись по типу "Ожидайте n секунд" и обратный отсчет на n, после окончания вместо надписи появляется кнопочка.
Как реализовать? В JS я полный 0.
  • Вопрос задан
  • 10113 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
xeeqqw
@xeeqqw
WEB-программист на ASP.NET MVC
Код ниже работает при подключенном JQuery

HTML:
<div id="timerBlock">
        <p>Ожидайте <span class="seconds">10</span> секунд</p>
    </div>


JavaScript:
var timerBlock = $('.seconds');
var num = 10; //количество секунд

var index = num;
var timerId = setInterval(function() {
  timerBlock.html(--index);
}, 1000);

setTimeout(function() {
  clearInterval(timerId);
  $('#timerBlock').html('<button>hello!</button>')
}, num*1000);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Набросал примитивный jQuery плагин для таймера обратного отсчёта (фиддл).

// создание jQuery плагина
(function($){
	var timebomb = function(){};

	timebomb.prototype = {
		defaults: {
			time		: 5,	// по умолчанию время в секундах
			countdown	: '%COUNTDOWN% с. осталось',
			prize		: 'Ура!',
		}
		,init: function($el, opts) {
			this.el = $el;
			this.opts = $.extend({}, this.defaults, opts || {});
			this.finish = (new Date).getTime() + 1000*this.opts.time;
			this.update();
			this.interval = window.setInterval( this.update.bind(this), 50);
		}
		,update: function() {
			var toGo = Math.round( (this.finish - (new Date).getTime())/1000);
			if( toGo > 0) this.el.html( this.opts.countdown.replace('%COUNTDOWN%', toGo));
			else {
				window.clearInterval( this.interval);
				this.el.html( this.opts.prize);
			}
		}
	};

	$.fn.timebomb = function(opts) {
		var tb = new timebomb();
		tb.init(this, opts);
	}
})( jQuery);


// применение
$('#timer-1').timebomb({
	time: 6,
	countdown: 'Ждите ещё %COUNTDOWN% секунд',
	prize: '<button type="button" class="btn btn-success">Жми!</button>',
});

$('#timer-2').timebomb({time: 11});
Ответ написан
Комментировать
@quant78
function countDown(second,endMinute,endHour,endDay,endMonth,endYear) {
var now = new Date();
second = (arguments.length == 1) ? second + now.getSeconds() : second;
endYear = typeof(endYear) != 'undefined' ? endYear : now.getFullYear();
endMonth = endMonth ? endMonth - 1 : now.getMonth(); //номер месяца начинается с 0
endDay = typeof(endDay) != 'undefined' ? endDay : now.getDate();
endHour = typeof(endHour) != 'undefined' ? endHour : now.getHours();
endMinute = typeof(endMinute) != 'undefined' ? endMinute : now.getMinutes();
//добавляем секунду к конечной дате (таймер показывает время уже спустя 1с.)
var endDate = new Date(endYear,endMonth,endDay,endHour,endMinute,second+1);
var interval = setInterval(function() { //запускаем таймер с интервалом 1 секунду
var time = endDate.getTime() - now.getTime();
if (time < 0) { //если конечная дата меньше текущей
clearInterval(interval);
alert("Неверная дата!");
} else {
var days = Math.floor(time / 864e5);
var hours = Math.floor(time / 36e5) % 24;
var minutes = Math.floor(time / 6e4) % 60;
var seconds = Math.floor(time / 1e3) % 60;
var digit=''+
'';
var text=''
var end=':'
document.getElementById('mytimer').innerHTML = 'осталось: '+
digit+days+text+'Дней'+end+digit+hours+text+'Часов'+end+
digit+minutes+text+'Минут'+end+digit+seconds+text+'Секунд';
if (!seconds && !minutes && !days && !hours) {
clearInterval(interval);
echo {'Кнопка'};
}
}

}
}
countDown(30); //устанавливаем таймер на 30 секунд
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы