27.07.2015, 22:10
|
Новичок на форуме
|
|
Регистрация: 01.03.2014
Сообщений: 9
|
|
Замена слова посредством 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>
Работа вполне устраивает, но, мне нужно не одно слово заменить, а несколько:
Допустим есть массив слов: (Вася, Юра, Маша, Саша)
Как можно заменить все эти данные слова на ****
|
|
27.07.2015, 23:04
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
|
|
27.07.2015, 23:06
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
EmperioAf,
а как чтоб массив то можно было вставить с именами ?
|
|
28.07.2015, 00:07
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
поиск текстовых узлов и замена текста
<!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>
|
|
28.07.2015, 03:08
|
Аспирант
|
|
Регистрация: 22.07.2009
Сообщений: 85
|
|
Сообщение от рони
|
treeWalker
|
Первый раз увидел этот объект, заинтересовался, и смотрю яндекс и гугл на русском ничего про него не находит.
Только на английском.
рони, скажите плиз, что это за объект? Чем полезен? Где лучше почитать про него?
|
|
28.07.2015, 05:52
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
|
|
18.03.2016, 15:16
|
Профессор
|
|
Регистрация: 15.09.2015
Сообщений: 180
|
|
Сообщение от рони
|
<!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>
|
Спасибо
|
|
18.03.2016, 15:20
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,109
|
|
замена слов по списку
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>
Последний раз редактировалось рони, 16.04.2019 в 13:34.
|
|
18.03.2016, 15:34
|
Профессор
|
|
Регистрация: 15.09.2015
Сообщений: 180
|
|
Спасибо большое
|
|
|
|