Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #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);//если таймер не закончился повторяем функцию
	}
}

Помогите, пожалуйста, ребята
Ответить с цитированием
  #2 (permalink)  
Старый 06.11.2013, 17:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,125

Synov_son, строка 2 и 33 круглые скобки нафиг?!
Сообщение от Synov_son
setTimeout(count_back(), 1000)
Ответить с цитированием
  #3 (permalink)  
Старый 06.11.2013, 17:53
Аспирант
Отправить личное сообщение для Synov_son Посмотреть профиль Найти все сообщения от Synov_son
 
Регистрация: 02.08.2013
Сообщений: 74

Ну это ж функция , а не переменная. Не нужны ?
Ответить с цитированием
  #4 (permalink)  
Старый 06.11.2013, 17:54
Аспирант
Отправить личное сообщение для Synov_son Посмотреть профиль Найти все сообщения от Synov_son
 
Регистрация: 02.08.2013
Сообщений: 74

Все работает, емае - столько промучился из-за скобок. Спасибо большое.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обратный отсчет до даты с учетом часовых зон royksopp Flash 0 25.09.2013 18:25
обратный отсчет mcavalon Элементы интерфейса 3 10.08.2012 14:50
jQuery Timer - обратный отсчет времени в 10 минут adax jQuery 1 01.11.2011 14:54
Обратный отсчет Amateur Элементы интерфейса 1 31.07.2011 03:47
Многократный обратный отсчет sultan.khayrulin Общие вопросы Javascript 1 30.05.2010 22:41