Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.07.2015, 22:10
Новичок на форуме
Отправить личное сообщение для phonex Посмотреть профиль Найти все сообщения от phonex
 
Регистрация: 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>

Работа вполне устраивает, но, мне нужно не одно слово заменить, а несколько:
Допустим есть массив слов: (Вася, Юра, Маша, Саша)
Как можно заменить все эти данные слова на ****
Ответить с цитированием
  #2 (permalink)  
Старый 27.07.2015, 22:53
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

читайте здесь
http://javascript.ru/basic/regular-e...nom-vyrazhenii
по идее надо просто заменить (/Вася/g, '*****')
на
(/(Вася|Юра|Маша|Саша)/g, '*****')
Ответить с цитированием
  #3 (permalink)  
Старый 27.07.2015, 23:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

phonex,
http://javascript.ru/RegExp
Ответить с цитированием
  #4 (permalink)  
Старый 27.07.2015, 23:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

EmperioAf,
а как чтоб массив то можно было вставить с именами ?
Ответить с цитированием
  #5 (permalink)  
Старый 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>
Ответить с цитированием
  #6 (permalink)  
Старый 28.07.2015, 03:08
Аспирант
Отправить личное сообщение для Urfin Посмотреть профиль Найти все сообщения от Urfin
 
Регистрация: 22.07.2009
Сообщений: 85

Сообщение от рони
treeWalker
Первый раз увидел этот объект, заинтересовался, и смотрю яндекс и гугл на русском ничего про него не находит.
Только на английском.

рони, скажите плиз, что это за объект? Чем полезен? Где лучше почитать про него?
Ответить с цитированием
  #7 (permalink)  
Старый 28.07.2015, 05:52
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Urfin,
да документация на английском
https://developer.mozilla.org/en-US/...eateTreeWalker
http://www.w3.org/TR/DOM-Level-2-Tra...eateTreeWalker
по русски наверно достаточно описания тут
обход дерева DOM
Ответить с цитированием
  #8 (permalink)  
Старый 18.03.2016, 15:16
Профессор
Отправить личное сообщение для Sav2907 Посмотреть профиль Найти все сообщения от Sav2907
 
Регистрация: 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>
Спасибо
Ответить с цитированием
  #9 (permalink)  
Старый 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.
Ответить с цитированием
  #10 (permalink)  
Старый 18.03.2016, 15:34
Профессор
Отправить личное сообщение для Sav2907 Посмотреть профиль Найти все сообщения от Sav2907
 
Регистрация: 15.09.2015
Сообщений: 180

Спасибо большое
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пример тестовых заданий на js junior elshaarawy Учебные материалы 3 26.03.2015 15:17
js и замена классов (или идентификаторов) Stulikov Events/DOM/Window 2 06.05.2011 20:27
контекст вокруг выделенного слова в js Тима Элементы интерфейса 1 19.01.2011 08:28
XML на сервер посредством js Hron AJAX и COMET 10 26.12.2010 01:43