[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: пауза в jquery
Страницы: 1, 2
gudzik
привет!
ребята, помогите сделать паузу...

суть в том, что цыкл отрабатывает до того, как отрабатывает функция loadSelectImg(l2), она подгружает на страницу селекты с названиями картинок, после чего должна устанавливатся нужная картинка в селекте, но ничего не происходит
устанавливаются нужные картики только тогда, когда останавливаю выполнение кода алертом, который сейчас закоментил

$(document).ready(function ($) {

.................. тут чтение JSON

loadSelectImg(l2);

i=1;
while (i<=l2){
img2=data.slide1.id2[i-1];
//if (i<2){alert(img2);}
$("#select-img"+i+" :contains('"+img2+"')").attr("selected", "selected");
i++;
}

}
);
sergeiss
Используй таймаут из JS, подробное описание найдешь в тырнете
setTimeout( функция, временная задержка)

Задаешь задержку, допустим 100 (100 мс). И в функции указываешь, какие действия надо выполнить.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
gudzik
делал setTimeout но он не срабатывает

function ff(data){
i=1;
while (i<=l2){
img2=data.slide1.id2[i-1];
$("#select-img"+i+" :contains('"+img2+"')").attr("selected", "selected");
i++;
}
}


setTimeout(ff(data), 5000);
sergeiss
А толку-то, что ты засунул в таймаут этот цикл? Ты же сам говоришь, что у тебя всё срабатывает, если ты делаешь паузу за счет алерта в определенном месте.
Так в твоем коде с таймаутом тут нету паузы никакой. Сделай ее тут!
Возможно, что тебе надо отказаться от цикла. Вызываешь функцию, выполняешь действия, если специальный счетчик еще не дошел до порога, то опять вызываешь функцию с задержкой, задаваемой в таймауте. И так далее. Это будет, по сути, цикл. Но каждая его итерация будет выполняться с заданной задержкой.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
gudzik
что-то я запутался...

если я просто вызываю без всяких цыклов

	setTimeout(alert('5555'), 5000);


то задержки вывода алерта тоже нету
или я просто так сильно туплю???
sergeiss
Цитата (gudzik @ 28.10.2014 - 03:44)
или я просто так сильно туплю???

Именно smile.gif

Но чтобы сказать, как правильно, в первую очередь надо определить, где же тебе нужна задержка? То ли на самом деле на каждой итерации цикла, то ли перед циклом. Поэкспериментируй с алертом (как ты в самом начале темы написал, на примере того кода), где он влияет.

Вообще, насколько я понял, причина проблемы простая: ты пытаешься что-то сделать, а объект еще не создан. Вот и получается, что ни хрена не получается.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
gudzik
Цитата (sergeiss @ 27.10.2014 - 23:53)

Вообще, насколько я понял, причина проблемы простая: ты пытаешься что-то сделать, а объект еще не создан. Вот и получается, что ни хрена не получается.

да, так оно и есть...

где б я алерт не ставил, перед цыклом или всередине - результат положительный

а таймаут никак не получается sad.gif
gudzik
вот, нарыл что-то такое

	var i=0;

f=function(){

// тело цикла
document.write (i);

// счётчик и условие исполнения цикла
i=i+1; if (i<10) setTimeout(f, "1000");
};

f();


но и тут не работает

иду в гугл учить setTimeout :)
sergeiss
Цитата (gudzik @ 28.10.2014 - 04:01)
где б я алерт не ставил, перед цыклом или всередине - результат положительный

Вот от этого и будем исходить. Лучше, если перед циклом :) Тогда получается примерно так:

$(document).ready(function ($) {

.................. тут чтение JSON

loadSelectImg(l2);

setTimeout( function(){ process(); }, 300);

function process() {
var i=1;
while (i<=l2){
var img2=data.slide1.id2[i-1];
//if (i<2){alert(img2);}
$("#select-img"+i+" :contains('"+img2+"')").attr("selected", "selected");
i++;
}
}
}
);


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
sergeiss
PS. А почему бы тебе не вызывать это всё внутри функции loadSelectImg()? Тогда не надо будет гадать, какая же нужна задержка.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
gudzik
Цитата (sergeiss @ 28.10.2014 - 00:15)
PS. А почему бы тебе не вызывать это всё внутри функции loadSelectImg()? Тогда не надо будет гадать, какая же нужна задержка.

капец, как все просто...

вот что значит знания и опыт!

наверное так и сделаю, теперь есть над чем поексперементировать...

ОГРОМНОЕ СПАСИБО!!!
chee
gudzik Если вам нужна именно последовательность действий, а не задаержа то рекомендую изучить:
http://api.jquery.com/promise/
http://api.jquery.com/category/deferred-object/

_____________
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации
vital
Цитата
последовательность действий

Используют коллбеки, во-первых.
sergeiss
Как не стыдно. Вместо того, что бы дать нормальный совет, по вызову коллбека, да или того же деферреда, говоришь ставить таймер, что заведомо не верно и плохой совет. Аяяй.

_____________
"Нужно быть готовым прислушиваться к тем, кто может тебя чему-нибудь научить. Иначе ты никогда не вырастешь."

Откровенно я никому ниразу не нагрубил. А дать подзатыльник зарвавшемуся юнцу, так это и ему на пользу, и мне в удовольствие. © AllesKlar
sergeiss
Цитата (vital @ 28.10.2014 - 11:43)
sergeiss
Как не стыдно.

Не, не стыдно smile.gif Человек спросил, как сделать задержку в JS - я ответил.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
AllesKlar
sergeiss
Буквально вчера увидел в репозитории закоммитченное нашим JS-программистом
for(i = 0; i++; i < 999999999)
{
.............
}

Спросил: :o WTF???
Говорит "а, да то для теста нужно было небольшую задержку сделать, забыл стереть перед коммитом"
Но сказал-то он вчера днем, а вот всю ночь с позовчера на вчера я вертелся и думал "КАК??? КАК ОН МОГ" :D

_____________
[продано копирайтерам]
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.