Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замена слова посредством Java-script (https://javascript.ru/forum/misc/2946-zamena-slova-posredstvom-java-script.html)

Assassin 06.03.2009 15:56

Цитата:

Сообщение от Kolyaj (Сообщение 13718)
document.body.innerHTML = document.body.innerHTML.replace('AzriMan', 'AndryMan');
Грубо конечно :)

К сожалению, при вставке этого кода - ничего не произошло.

Цитата:

Сообщение от x-yuri
Assassin, т.е. цель - защита от XSS атак?

Нет

Цитата:

Сообщение от Gvozd
полагаю, что наоборот))))

Хм, я такого не говорил, я лишь приводил аналогии.

Assassin 08.03.2009 14:35

Ребят? Неужели никто не поможет? ):

x-yuri 08.03.2009 15:08

так ведь чтобы помочь нужно знать цель - "для чего это все?"

Gvozd 08.03.2009 15:20

не знаю почему у вас не работает этот код.
по крайней мере на простейших страницах он срабатывает.
вот, мой пример рабочей страницы
<html>
<head>
<script type="text/javascript">
window.onload=function(){
document.body.innerHTML = document.body.innerHTML.replace(/AzriMan/g, 'AndryMan');

}
</script>
</head>
<body>
qwe<br/>
azriMan<br/>
qwe<br/>
<table border="1">
	<tr>
		<td>AzriMan</td><td>AzriMa_n</td>
	</tr>
	<tr>
		<td>AzriM_an</td><td>AzriMa_n</td>
	</tr>
</table>
AzriMan<br/>
</body>
</html>

я заменил 'AzriMan' на /AzriMan/g для того, чтобы все вхождения заменялись.без этого тоже работает, но заменяет только первую строку.
с целью разъяснения этой функциипочитайте статью про регулярные выражения

вот еще одна вариация кода по замене, более сложная.
window.onload=function(){
all_elements=document.getElementsByTagName('*');
for(i=0,s=all_elements.length;i<s;i++)
	if(all_elements[i].tagName!="SCRIPT")
		for(j=0,s_=all_elements[i].childNodes.length;j<s_;j++)
			if(all_elements[i].childNodes[j].nodeType==3)
				all_elements[i].childNodes[j].textContent=all_elements[i].childNodes[j].textContent.replace(/AzriMan/g, 'AndryMan');
}

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

Assassin 08.03.2009 23:31

Эцсамое.... Всем спасибо за внимание, за попытку помочь) Видимо я не так истолковал цель, нихрена не сработало :(

Gvozd 09.03.2009 00:14

а по другому сформулировать цель слабо?
то. что вы попросили мы вам написали.
и оно работает.так, что изъясняйтесь более точно в следующий раз, чтобы не тратить свое, и ЧУЖОЕ время понапрасну.время знаете ли много стоит

Assassin 09.03.2009 00:44

Что ж, прошу прощения за ваше потраченное время.

Mak-Mak 15.03.2009 04:22

Gvozd спасибо
 
Gvozd спасибо, искал такой вот скриптик...!!! мне был нужен, что бы убирать из блока со ссылками tak.ru, надпись "Оплаченая реклама:" всё работает

300 27.06.2009 18:05

Подскажите, а как заменить строку <font tmp color=red> во всём тексте? Я не понимаю, как составить регулярное выражение.

str = new RegExp(/<font tmp color=red>/,'g')
так не работает.

300 27.06.2009 18:07

И ещё. Есть форма, в которое есть поле, например name=fld. Нужно взять из него значение и искать его на всей странице, а потом заменить на другое. Т.е. как использовать fld.value в глобальном поиске?


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