Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.04.2011, 09:04
Аспирант
Отправить личное сообщение для pro_xaoc Посмотреть профиль Найти все сообщения от pro_xaoc
 
Регистрация: 23.03.2011
Сообщений: 69

Не могу найти ошибку в коде
Приветствую всех! Помогите найти ошибку в коде:
$(function(){
var i=5;
do{	
	setTimeout('$("#div").html(i)',1000);
	i--;
	}while(i>=0);
})

Firebag выдает ошибку, что переменная i не определена. Заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 06.04.2011, 09:23
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

http://alljs.ru/articles/timeout/overview.html
3-й абзац.


Сообщение от pro_xaoc
Firebag
Огненная сумка?
Ответить с цитированием
  #3 (permalink)  
Старый 06.04.2011, 09:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от pro_xaoc
setTimeout('$("#div").html(i)',1000);
Строка '$("#div").html(i)' строка будет выполнена в глобальной области видимости;
а переменная i локальная, лучше использовать анонимную функцию а не строку
setTimeout(function () { $("#div").html(i);},1000);
но и так скрипт нормально не заработает ... но ошибок не будет
Рабочий вариант
$(function(){
var i=5;
function foo() {
 $("#div").html(i);
 i-- && setTimeout(function (){foo()},1000);
    };
foo();
})
Ответить с цитированием
  #4 (permalink)  
Старый 06.04.2011, 10:07
Аспирант
Отправить личное сообщение для pro_xaoc Посмотреть профиль Найти все сообщения от pro_xaoc
 
Регистрация: 23.03.2011
Сообщений: 69

рони,
спасибо, работает. Но я не могу понять смысла этого скрипта, вроде цикла нет, но работает так, как будто стоит цикл. Можете объяснить, если не трудно? Спасибо.
Ответить с цитированием
  #5 (permalink)  
Старый 06.04.2011, 10:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

pro_xaoc,

Сообщение от рони
i-- && setTimeout(function (){foo()},1000);
может так понятнее будет
Функция сама решает надо ли ей запуститься ещё раз
i--;
if(i>0)setTimeout(function (){foo()},1000);

Пока условие выполняеться i ,больше нуля запускать таймер, который запустит функцию.
Ответить с цитированием
  #6 (permalink)  
Старый 06.04.2011, 10:29
Аспирант
Отправить личное сообщение для pro_xaoc Посмотреть профиль Найти все сообщения от pro_xaoc
 
Регистрация: 23.03.2011
Сообщений: 69

рони,
низкий вам поклон! спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку((( hacker_007 Общие вопросы Javascript 5 28.01.2011 17:37
Отладка. При клике на элемент найти функцию-обработчик в коде romangaag Events/DOM/Window 3 24.10.2010 03:09
Не могу найти ошибку. Hellp jey7 Events/DOM/Window 2 20.06.2010 10:49
Помогите найти ошибку digital_sword jQuery 2 30.11.2009 19:50
Не могу найти ошибку Lewik AJAX и COMET 4 19.07.2009 21:33