Замена слова посредством 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:07. |