Замена слова посредством JS
Привет форумчане, нашел поиском данный скрипт:
<script>
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(/Вася/g, '*****');
}
</script>
Работа вполне устраивает, но, мне нужно не одно слово заменить, а несколько: Допустим есть массив слов: (Вася, Юра, Маша, Саша) Как можно заменить все эти данные слова на **** |
читайте здесь
http://javascript.ru/basic/regular-e...nom-vyrazhenii по идее надо просто заменить (/Вася/g, '*****') на (/(Вася|Юра|Маша|Саша)/g, '*****') |
phonex,
http://javascript.ru/RegExp |
EmperioAf,
а как чтоб массив то можно было вставить с именами ? |
поиск текстовых узлов и замена текста
;)
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script>
window.onload =
function() {
var treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false),
users = ["Вася", "Юра", "Маша", "Саша"],
reg = new RegExp(users.join("|"), "ig");
while (treeWalker.nextNode()) {
var el = treeWalker.currentNode;
el.data = el.data.replace(reg, "*****")
}
};
</script>
</head>
<body>
Допустим есть массив слов: (ВАСЯ, ЮРА, МАША, САША)
<div>
<a>Маша</a>
</div>
<ul>
<li>Саша</li>
</ul>
<div>
<a>Маша</a>
</div>
<ul>
<li>Саша</li>
</ul>
</body>
</html>
|
Цитата:
Только на английском. рони, скажите плиз, что это за объект? Чем полезен? Где лучше почитать про него? |
Urfin,
да документация на английском https://developer.mozilla.org/en-US/...eateTreeWalker http://www.w3.org/TR/DOM-Level-2-Tra...eateTreeWalker по русски наверно достаточно описания тут http://javascript.ru/forum/events/29...tml#post187693 |
Цитата:
|
замена слов по списку
Sav2907,
:-/ в обьекте строка17 ключи в нижнем регистре !!! в строке 12 регистр любой
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script>
window.onload =
function() {
var treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false),
users = ["Вася", "Юра", "Маша", "Саша"],
reg = new RegExp(users.join("|"), "ig");
while (treeWalker.nextNode()) {
var el = treeWalker.currentNode;
el.data = el.data.replace(reg, function(a) {
return {"маша" : "Мария", "саша":"Александра"}[a.toLowerCase()] || a
})
}
};
</script>
</head>
<body>
Допустим есть массив слов: (ВАСЯ, ЮРА, МАША, САША)
<div>
<a>Маша</a>
</div>
<ul>
<li>Саша</li>
</ul>
<div>
<a>Маша</a>
</div>
<ul>
<li>Саша</li>
</ul>
</body>
</html>
|
Спасибо большое
|
| Часовой пояс GMT +3, время: 08:57. |