Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Заменить определенные конструкции на странице. Нужен оптимизированный вариант. (https://javascript.ru/forum/events/21160-zamenit-opredelennye-konstrukcii-na-stranice-nuzhen-optimizirovannyjj-variant.html)

webpuper 30.08.2011 22:20

Заменить определенные конструкции на странице. Нужен оптимизированный вариант.
 
Здравствуйте!

В тексте страницы имеются определнные сокращенные ссылки на книги Библии, например:

Прочтите данный текст Быт. 3:12, а теперь здесь: Исход 2:11 и т.д.

Скрипт должен заменить все эти сокращенные названия на определенную ссылку.

В переменной books хранятся все возможные сокращения книги и ее Id, например:

books[0]=[ ['Быт.','Быт','Бт'] , [1] ];
books[1]=[ ['Исх.','Исх','Исход'], [2] ];

.
.
.
и т.д всего - 66 элементов


После замены должно получиться: Прочтите данный текст <a href="#1-3-12">Быт. 3:12</a>, а теперь здесь: <a href="#2-2-11">Исход 2:11 и т.д.

т.е. ссылки содержащие якорь вида #номер_книги_из_массива-глава-стих

Интересует оптимальный метод замены, т.к. прогонять по циклу
document.body.innerHTML.replace(/xxxxxxxx/g, 'xxxxxxxx2');
мне кажется - очень медленный способ.

dmitriymar 30.08.2011 22:28

ну ясно ,чего ему не тормозить ?
получать всякий раз содержимое страницы...
загнать содержимое в переменную и изменять её а не document.body всякий раз - получить содержимое,изменить содержимое,предать содержимое.
да и смысл ещё по тегам прицепом проходить? брать содержимое тегов и менять именно содержимое и атрибуты если необходимо -наверно будет побыстрее,тем более если известно в каком типе тегов нужно произвести замену

webpuper 30.08.2011 23:12

если нет других вариантов оптимизации, то помогите регулярку написать для replace(/xxxxxxxx/g, 'xxxxxxxx2') для данной задачи :write:

Триви 31.08.2011 01:01

А почему изначально нельзя сгенерить в таком виде? :blink:

dmitriymar 31.08.2011 11:23

Цитата:

Сообщение от webpuper
если нет других вариантов оптимизации, то помогите регулярку написать для replace(/xxxxxxxx/g, 'xxxxxxxx2') для данной задачи

чегото по тону такое ощущение ,что обязаны...

webpuper 02.09.2011 14:16

Цитата:

Сообщение от Триви (Сообщение 123718)
А почему изначально нельзя сгенерить в таком виде? :blink:

этот код будет размещаться на внешних сайтах, которые пожелают его разместить

webpuper 02.09.2011 14:17

Цитата:

Сообщение от dmitriymar (Сообщение 123789)
чегото по тону такое ощущение ,что обязаны...

нормальный ты, нет? я хочу конструктивной помощи, а не твое гавно мне

розовый слоник 02.09.2011 15:44

если хочешь что бы за тебя написали код тебе в раздел работа)

webpuper 03.09.2011 23:12

Цитата:

Сообщение от розовый слоник (Сообщение 124326)
если хочешь что бы за тебя написали код тебе в раздел работа)

я не прошу писать "за меня", но если бы у вас был конструктивный совет, то этого было достаточно. а так ниочемники какие-то


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