Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.11.2011, 20:53
Аспирант
Отправить личное сообщение для ksevelyar Посмотреть профиль Найти все сообщения от ksevelyar
 
Регистрация: 21.03.2009
Сообщений: 53

Replace и функция
Хочу сохранить все блочные элементы в массив, заменить из заглушками, обработать текст и вставить блоки обратно.

Но счётчик не увеличивается. Почему? Я читал что обращение к функции идёт при каждом совпадении.

Я хочу вывод: dummy0 and dummy1

Получаю: dummy0 and dummy0

str ="<pre>apple</pre> and <pre>orange</pre>";

 blocks = /\<(h[1-6]|pre|div|ul|)\>([\s\S]*?)\<\/\1\>/gi;   

 i=0;
 var tmp_blocks = new Array();    
    
 str = str.replace(blocks, storeblocks);
 
 function storeblocks(x) {
          tmp_blocks[i] = x; 
          return "dummy"+i;
          i=i++;  
}

alert(str);
Ответить с цитированием
  #2 (permalink)  
Старый 22.11.2011, 21:00
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

Сообщение от ksevelyar
i=i++;
Из-за вот этого откровенного бреда. Вы вообще знаете, как действует оператор инкремента?
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #3 (permalink)  
Старый 22.11.2011, 21:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

ksevelyar,
до увеличения i никогда не доходит ... строка 12 это конец вашей функции
Рабочий вариант ...
str ="<pre>apple</pre> and <pre>orange</pre>";

 blocks = /\<(h[1-6]|pre|div|ul|)\>([\s\S]*?)\<\/\1\>/gi;

 i=0;
 var tmp_blocks = new Array();

 str = str.replace(blocks, storeblocks);

 function storeblocks(x) {
          tmp_blocks[i] = x;
          return "dummy"+i++;

}

alert(str);
Ответить с цитированием
  #4 (permalink)  
Старый 22.11.2011, 21:09
Аватар для trikadin
Модератор
Отправить личное сообщение для trikadin Посмотреть профиль Найти все сообщения от trikadin
 
Регистрация: 27.04.2010
Сообщений: 3,417

рони, а, ну да. Просто такое извращение поразило меня в самое сердце, и остальное я уже не замечал)
__________________
Читайте:
Ты любопытный) Всё-таки, ничему в этом мире не помешает хорошая доля юмора)
Как спросить, чтобы вам ответили
Часто Задаваемые Вопросы (FAQ)
Ответить с цитированием
  #5 (permalink)  
Старый 22.11.2011, 22:25
Аспирант
Отправить личное сообщение для ksevelyar Посмотреть профиль Найти все сообщения от ksevelyar
 
Регистрация: 21.03.2009
Сообщений: 53

Сообщение от рони Посмотреть сообщение
ksevelyar,
до увеличения i никогда не доходит ... строка 12 это конец вашей функции
Рабочий вариант ...
...
          return "dummy"+i++;
}...
Спасибо. Я думал что функция заканчивается не после «return», а после «}».
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функция не успевает Sadist_dead Элементы интерфейса 22 02.10.2011 19:00
Помогите с replace! faforty Общие вопросы Javascript 2 28.08.2011 13:10
Где вызывается функция? cradis Общие вопросы Javascript 5 23.04.2011 13:47
Mootools функция periodical не работает по id Jumong Общие вопросы Javascript 2 11.09.2010 16:42
Рекурсивная функция HellBells Общие вопросы Javascript 3 23.11.2009 11:23