Показать сообщение отдельно
  #1 (permalink)  
Старый 06.11.2013, 16:57
Аспирант
Отправить личное сообщение для Synov_son Посмотреть профиль Найти все сообщения от Synov_son
 
Регистрация: 02.08.2013
Сообщений: 74

Обратный отсчет
Здравствуйте, помогите, пожалуйста, решить проблему:

Сделал на php таймер обратного отсчета, решил добавить с js немного интерактивности, что бы таймер работал и без перезагрузки страницы.
В общем, у меня есть текст на странице такого вида:
....через 27 минут 35 секунд.
<nobr><span id="m"> 27</span><span id="m_label"> минут</span><span id="s"> 35</span><span id="s_label"> секунд</span></nobr>

И собственно js код, который получает числа из 35 и 27 каждую секунду и меняет и сравнивает нужно ли поменять склонение слова(это работает). А когда время доходит 0 в обоих числах, вместо всей фразы вместе с таймером появляется другой текст и цикл прекращается. Так вот при загрузке страницы сразу появляется финальная надпись. Да и если убрать кусок кода появления надписи, то таймер сразу по нулям числа ставить будто игнорируя интервал а потом чрез интервал меняет склонение...
Вот js
$(document).ready(function() {
		setTimeout(count_back(), 1000);//начинает работать через секунду
});
function count_back() {
	var m = parseFloat($('#m').html());//Минуты
	var m_label = $('#m_label').html();//Склоняемое слово "минуты"
	var s = parseFloat($('#s').html());//Секунды
	var s_label = $('#s_label').html();//Склоняемое слово "секунды"
	if (s==0) {//если секунды достигли нуля, следующее число секунд 59
		s = 59;
		$('#s').html(' '+s);//перезапись секунд
		change_s_label(s, s_label);//функция перезапись слова "секунды" (работает корректно)
		m--;//ну и собственно снижаем число минут
		if (m==0) {//если меняем с 1 на 0
			hide_elem('m');//прячем фразу "0 минут" - работает
		}
		$('#m').html(m);//перезапись минут
		change_m_label(m, m_label);//функция перезапись слова "минуты" (работает корректно)
		show_elem('s');//проявляем фразу 59 секунд (когда меняется с 1 на 0 скрывается) - должно работать
	}
	else {//если число секунд не 0, то выполняем стандартную операцию
		s--;//уменьшаем секунды на одну
		$('#s').html(' '+s);//перезаписываем
		change_s_label(s, s_label);//функция перезапись слова "секунды" (работает корректно)
		if (s==0) {//если секунды достигли нуля
			hide_elem('s');//скрываем фразу "0 секунд" - работает
		}
	}
	if(m==0 && s==0) {//если таймер закончился меняем текст
		$('#message :last-child').fadeOut(500).html('Попробуйте снова.').fadeIn(500);
	}
	else {
		setTimeout(count_back(), 1000);//если таймер не закончился повторяем функцию
	}
}

Помогите, пожалуйста, ребята
Ответить с цитированием