Заменить конкретную строку тега - PullRequest
0 голосов
/ 17 июня 2011

У меня есть следующая функция

function replacer(oldstring, newstring) {
document.body.innerHTML = document.body.innerHTML.replace(oldstring, newstring);
}

Я хочу иметь возможность заменить любой текст , если не внутри следующий тег

<a id="word">some text</a>

или между <> символами.

Подскажите, пожалуйста, есть ли способ пропустить, когда oldstring находится внутри тега a или между <> символами.

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 17 июня 2011

Это никогда не является хорошим подходом для замены bodyHTML тела, это приводит к повторной визуализации всей страницы, что может иметь нежелательные эффекты.

Вы можете найти на странице строку:

Если найден какой-либо, определите, является ли родительский элемент-узел диапазона (или один из его предков, если необходимо) тем, который следует исключить. Если нет, замените текст.

К сожалению, ни один из указанных выше методов не работает в опере.

0 голосов
/ 17 июня 2011

Я думаю, что следующее должно помочь:

function replacer(oldstring, newstring) {
    var regExp = new RegExp("(<[^<>]+>)" + oldstring + "(</[^<>]+>)", "g");
    document.body.innerHTML = document.body.innerHTML.replace(regExp, "$1" + newstring + "$2");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...