Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.07.2013, 01:32
Интересующийся
Отправить личное сообщение для Tylmaril Посмотреть профиль Найти все сообщения от Tylmaril
 
Регистрация: 21.07.2013
Сообщений: 10

Вывод значений таймера в div
Доброго времени суток.
Имееться блок div и кнопка.По нажатию кнопки должен включиться таймер и ,отсчитав нужный мне промежуток времени,выдать сообщение и обнулиться.При этом мне бы хотелось чтобы в блоке div отображался этот самый отсчет,с чем у меня собственно и возникли проблемы.В скрипте после первого вывода значения в div стоит алерт(причина в том,что он по моим ощущения стопает скрипт,и я могу поэтапно убедиться что скрипт работает правильно и значения действительно по очереди заносяться в блок div),но без алерта в блоке div отображаеться сразу timeout,что меня не устраивает.Как можно сделать так,чтобы значения таймера отображались постепенно и с задержкой по времени.
С языком только знакомлюсь, поэтому по возможности пояснить максимально просто,если есть грубые ошибки в коде,то так же было бы неплохо на них указать,буду благодарен.

ниже приведены куски кода html

<head>
</head>
<body>
<div id="time_div">  00:30   </div>
<div>
<input id="button" type="button" value=" кнопка "/>
</div>
</body>




и самой странички скрипта соответственно

window.onload = function()
{

var i = 30;
var time_div = document.getElementById('time_div');



	document.getElementById('button').onclick = function()
	{
		function timer()
		{
		for (i <= 30; i >= 25; i--)
			{
				time_div.innerHTML = "00:"+i;
				alert(i);			
			}
			if (i == 25);
			{
				time_div.innerHTML = "timeout";
				clearInterval(timer)
			}	
		}
	setInterval(timer,2000);
	}
Ответить с цитированием
  #2 (permalink)  
Старый 21.07.2013, 01:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от Tylmaril
i <= 30;

http://learn.javascript.ru/while-for#цикл-for
Ответить с цитированием
  #3 (permalink)  
Старый 21.07.2013, 02:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Tylmaril,

<!DOCTYPE HTML>

<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
        <script>
            window.onload = function () {
                var i = 30;
                var time_div = document.getElementById('time_div');

                function timer() {

                    // alert(i);
                    if (i < 25) {
                        time_div.innerHTML = "timeout";
                    } else {
                        time_div.innerHTML = "00:" + i;
                        i--
                        window.setTimeout(timer, 2000);
                    }


                }

                document.getElementById('button').onclick = timer
            }
        </script>
</head>

<body>

           <div id="time_div">00:30</div>
            <div>
                <input id="button" type="button" value=" кнопка" />
            </div>
    </body>




</html>

Последний раз редактировалось рони, 21.07.2013 в 02:12.
Ответить с цитированием
  #4 (permalink)  
Старый 21.07.2013, 13:05
Интересующийся
Отправить личное сообщение для Tylmaril Посмотреть профиль Найти все сообщения от Tylmaril
 
Регистрация: 21.07.2013
Сообщений: 10

Спасибо,заработало,но я не совсем понял,ошибка была только из за цикла for?
Ответить с цитированием
  #5 (permalink)  
Старый 21.07.2013, 13:22
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Tylmaril,
цикл написан был некорректно да и ненужен плюс фигурные скобки одна не парная - после условия точка с запятой зачемто if (i == 25);
Ответить с цитированием
  #6 (permalink)  
Старый 21.07.2013, 15:58
Интересующийся
Отправить личное сообщение для Tylmaril Посмотреть профиль Найти все сообщения от Tylmaril
 
Регистрация: 21.07.2013
Сообщений: 10

Что то я не могу обнулить теперь таймер,правильная ли такая запись?

if (i < 25) 
{
time_div.innerHTML = "timeout";
clearTimeOut(timer);
}
Ответить с цитированием
  #7 (permalink)  
Старый 21.07.2013, 16:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Tylmaril,
в данном случае это бессмысленно timer функция и в обнулении ненуждается -- она сама решает запустится ли ей ещё раз или уже хватит если нужно снова запустить установите i больше 25 и запустите таймер
Ответить с цитированием
  #8 (permalink)  
Старый 21.07.2013, 16:47
Интересующийся
Отправить личное сообщение для Tylmaril Посмотреть профиль Найти все сообщения от Tylmaril
 
Регистрация: 21.07.2013
Сообщений: 10

После вывода timeout присвоил i=30;.
Таймер заработал как надо,благодарю за помощь.

Последний раз редактировалось Tylmaril, 21.07.2013 в 18:35.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод разных div в зависиости от checkbox djonA Общие вопросы Javascript 1 11.05.2013 12:52
Нестабильно срабатывает вывод значений с формы NeVirus Элементы интерфейса 8 20.02.2013 09:34
Autocomplete вывод результата в div darl jQuery 1 14.09.2012 12:57
Суммирование значений всех элементов div frolvict jQuery 1 11.07.2011 17:05
Задачка: вывод div по ссылке alt5000 Элементы интерфейса 19 28.10.2008 21:21