Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   проблема с innerHTML (https://javascript.ru/forum/events/28448-problema-s-innerhtml.html)

rapstas 20.05.2012 11:44

проблема с innerHTML
 
var str = document.body.innerHTML;
var str=str.replace(/qlt_mail_b.png/g,"qlt_mail.png");
 var str=str.replace(/qlt_man_b.png/g,"qlt_man.png");
 document.body.innerHTML = str;


скрипт свою задачу выполняет,но после этого перестают работать кнопки форм.Как этого избежать?

vadim5june 20.05.2012 11:59

когда Вы пишите
document.body.innerHTML = str;
то обработчики событий определенные ранее перестают работать
лучше пользоваться
document.body.appendChild
и insertBefore
или переопределять обработчики

rapstas 20.05.2012 12:24

не могли бы Вы написать пример как это сделать?

vadim5june 20.05.2012 12:29

Цитата:

Сообщение от rapstas (Сообщение 175558)
не могли бы Вы написать пример как это сделать?

А что Вы там вырезаете?Приведите html код если небольшой-подумаем каким образом лучше сделать

rapstas 20.05.2012 12:36

я пишу userjs и хочу заменить иконки и некоторые слова

vadim5june 20.05.2012 12:41

Цитата:

Сообщение от rapstas (Сообщение 175561)
я пишу userjs и хочу заменить иконки и некоторые слова

иконки-нужно искать теги img
var imgs=document.getElementsByTagName('img');
for(var i=0;i<imgs.length;i++){//здесь находим и заменяем
};
и заменять в них src
слова тоже по другому

rapstas 20.05.2012 12:48

с иконками понятно,а слова как?

vadim5june 20.05.2012 12:58

Цитата:

Сообщение от rapstas (Сообщение 175564)
с иконками понятно,а слова как?

ищете тот самый внутренний тег где они расположены и заменяете
например
<div>yahoo<span>apple</span></div>
чтобы заменить apple на google ищете этот span
и пишите
span.innerHTML='google';
тогда вы ничего не нарушите и события будут работать
еще корректнее найти на body все node с nodeType==3 то есть текстовые ноды и заменять их


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