Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   как сделать чтобы цикл не запускался второй раз (https://javascript.ru/forum/events/37740-kak-sdelat-chtoby-cikl-ne-zapuskalsya-vtorojj-raz.html)

Brook 05.05.2013 12:27

как сделать чтобы цикл не запускался второй раз
 
Доброго времени суток.
У меня есть сайт на нем в "подвале" лежит цикл который после загрузки страницы проходит по странице и заменяет слова на линки

также у меня стоит реклама которая я не знаю что делает но когда она отображается цикл запускается дважды -- ((

Подскажите можно ли сделать так что бы цикл проходил по страницы один раз и "включался"!?

Заранее спасибо за помощь!:thanks:

borodadada 05.05.2013 14:26

Вход по переменной со значением 1 , в конце цикла переменной присваивается значение 2.

Brook 05.05.2013 14:53

borodadada,
ага у меня присваивается до 15 надо что бы второй раз (+15) не присваивалось!!!

_0_ 10.05.2013 07:45

ready в JQuery может срабатывать несколько раз, видимо, у тебя реклама вызывает ready еще раз, когда подгружает контент методом Ajax.

_0_ 10.05.2013 15:25

Есть такой шаблон в javascript, называется "самоопределяемые функции",
такие функции сами меняют ссылку на себя при первом обращении, например:

function do_once(){
  return _do_once();
}

function _do_once(){
  // сразу заменяем себя
  _do_once=function(){};

  // делаем что-то
  return "все ок";
}

$( function(){do_once();});
// или вроде можно так - $( do_once ), надо попробовать


do_once - это специальная обертка для ссылок, т.к. если передать параметром _do_once как callback то ссылка на первоначальный вариант функции не измениться, а так какое-либо действие будет выполнено гарантированно один раз, но этот способ немного "грязноватый".
В JQuery вроде есть какой-то способ добавить callback на один раз, ключевое слово для поиска по документации - once.

Brook 12.05.2013 21:43

_0_,
Оо, спасибо за ответ...
я тоже уже через callback сделал - вроде пока работает))


Часовой пояс GMT +3, время: 07:33.