gazes12
@gazes12

Как корректно вывести RegExp изменение?

Здравствуйте!
const body = document.body;
function recursy(element){
	element.childNodes.forEach(node => {
		if(element.childNodes.length > 1){
			element.innerText = element.innerText.replace(new RegExp("[0-9]", "g"), 149);
			recursy(node);
		}
	});
}

recursy(body);


Ну почему-то, у меня вcе на сайте заменяется на 149, а должны только цифры, почему работает некорректно, подскажите пожалуйста, буду благодарен за помощь!
  • Вопрос задан
  • 102 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
function replaceText(node, replacer) {
  if (node.nodeType === Node.ELEMENT_NODE) {
    node.childNodes.forEach(n => replaceText(n, replacer));
  } else if (node.nodeType === Node.TEXT_NODE) {
    node.nodeValue = replacer(node.nodeValue);
  }
}


replaceText(document.body, str => str.replace(/\d/g, 'hello, world!!'));

или

function replaceText(node, replacer) {
  const iter = document.createNodeIterator(node, NodeFilter.SHOW_TEXT);

  for (let node = null; node = iter.nextNode(); ) {
    node.nodeValue = replacer(node.nodeValue);
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы