Этот сайт не наркоманов. Это сайт программистов.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха информатор 3.1
Еще более удобное оповещение о флуде!

Краснодарское время: 25 Май, 2012, 07:19:55

Страниц: [1] 2
Печать
Автор Тема: replace() в Javascript  (Прочитано 340 раз)
0 Пользователей и 1 Гость смотрят эту тему.
webprogs    ↓ 
30 Ноябрь, 2011, 01:02:24
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 8
Сила слова: 0

Здравствуйте уважаемые! Требуется помощь по функции replace().
Есть следующая функция, она вызывается по клику на кнопку, и должна выбирать определённые ссылки из документа и реплейсить их:
Javascript

      function replacement() {
          var links = content.document.links;
          var re = new RegExp("(.*)hash=(.+)&PHPSESSID=(.+)&id=(.+)&n=(.+)");
          for (var i = 0; i < links.length; i++) {
          if(re.test(cont[i])){ // Проверка регулярки проходит, на адресах типа: http://www.domen.com/url_generate.php?hash=2e84615441c3bdfdde71983639be10ba&PHPSESSID=12e7b526ed98176608b70f627dbabd86&id=DgUMCQ,,&n=CQ,,
          alert(links[i]); // Переменная существует и выводится алертом
          var new_str = links[i].replace(re,"url_generate.php?hash=$2&PHPSESSID=$3&id=12345&n=67890");
          alert(new_str); // А тут нет, и цикл прерывается на этом месте
          }
          }
      }
 
Записан
webprogs    ↓ 
30 Ноябрь, 2011, 01:12:30 , спустя 10 минут 6 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 8
Сила слова: 0

Код используется в контексте написания плагина под Firefox, по-этому
Javascript

var links = content.document.links;
 
Спустя 2 минуты 28 секунд добавил
Там где:
Javascript

if(re.test(cont[i])){
 
Должно быть
Javascript

if(re.test(links[i])){
 
По запарке попутал, но сути это не меняет, цикл прерывается после первой итерации, хотя находит ссылок 20...
Записан
Stasovsky    ↓ 
30 Ноябрь, 2011, 01:19:25 , спустя 6 минут 55 секунд
НЕ ХУЕТА! ХУЕТА!

Сенсей XD
Группа: Джедаи

Карма: 54
Сообщений: 3654
Сила слова: 1.48

я нихуя не понял))
Записан
webprogs    ↓ 
30 Ноябрь, 2011, 01:21:03 , спустя 1 минуту 38 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 8
Сила слова: 0

Короче, тест регулярки на соответствие паттерну - проходит, но регулярка при этом не реплейсит(
Записан
Sinkler    ↓ 
30 Ноябрь, 2011, 01:35:53 , спустя 14 минут 50 секунд
НЕ ХУЕТА! ХУЕТА!

Похуй, пляшем!
Группа: Джедаи

Карма: 73
Сообщений: 6808
Сила слова: 1.07

String#search пробовал вместо RegEx#test?
Записан

Stasovsky    ↓ 
30 Ноябрь, 2011, 01:37:30 , спустя 1 минуту 37 секунд
НЕ ХУЕТА! ХУЕТА!

Сенсей XD
Группа: Джедаи

Карма: 54
Сообщений: 3654
Сила слова: 1.48

Sinkler, так он же говорит, что тестит норм
Записан
Stasovsky    ↓ 
30 Ноябрь, 2011, 01:44:39 , спустя 7 минут 9 секунд
НЕ ХУЕТА! ХУЕТА!

Сенсей XD
Группа: Джедаи

Карма: 54
Сообщений: 3654
Сила слова: 1.48

у меня все пашет... попробуй ignore case поставить в регулярку...
Записан
webprogs    ↓ 
30 Ноябрь, 2011, 03:27:25 , спустя 1 час 42 минуты 46 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 8
Сила слова: 0

ignore case - не помог... Ппц, какой-то..
Записан
Stasovsky    ↓ 
30 Ноябрь, 2011, 03:32:00 , спустя 4 минуты 35 секунд
НЕ ХУЕТА! ХУЕТА!

Сенсей XD
Группа: Джедаи

Карма: 54
Сообщений: 3654
Сила слова: 1.48

перегрузи комп XD
Записан
webprogs    ↓ 
30 Ноябрь, 2011, 03:37:48 , спустя 5 минут 48 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 8
Сила слова: 0

Вот че, при дебаге обнаружил: Error on line 6: links.replace is not a function...
Записан
Stasovsky    ↓ 
30 Ноябрь, 2011, 03:43:34 , спустя 5 минут 46 секунд
НЕ ХУЕТА! ХУЕТА!

Сенсей XD
Группа: Джедаи

Карма: 54
Сообщений: 3654
Сила слова: 1.48

блеа, а ты сразу не мог туда посмотреть?
какого типа у тебя links?
Записан
webprogs    ↓ 
30 Ноябрь, 2011, 03:46:00 , спустя 2 минуты 26 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 8
Сила слова: 0

links - массив, просто пыха режет квадратные скобки с итератором... Там все правильно, мозилла видимо не понимает функцию replace(), ушел дальше читать маны...
Записан
Stasovsky    ↓ 
30 Ноябрь, 2011, 03:47:41 , спустя 1 минуту 41 секунду
НЕ ХУЕТА! ХУЕТА!

Сенсей XD
Группа: Джедаи

Карма: 54
Сообщений: 3654
Сила слова: 1.48

посмотри с какими типами работает реплейс
Записан
webprogs    ↓ 
30 Ноябрь, 2011, 04:09:56 , спустя 22 минуты 15 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 8
Сила слова: 0

Блеать!!!! Это пиздец!) решил так:
Javascript

          var str = new String(links[i]);
          str = str.replace(re,"url_generate.php?hash=$2&PHPSESSID=$3&id=12345&n=67890");
 
Спустя 53 секунды добавил
Спасибо за помощь) Потребовалось явное приведение к типу, типа var не кошерно(
Записан
phpdude    ↓ 
30 Ноябрь, 2011, 05:52:21 , спустя 1 час 42 минуты 25 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 345
Сообщений: д-о-х-у-я!
Сила слова: 1.66

webprogs, все от незнания мат части нуб
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Страниц: [1] 2
Печать
 

Перейти в:  

Этот топик скрыли: adw0rd