замена текста javascript - PullRequest
       7

замена текста javascript

1 голос
/ 30 октября 2011

Я использую jquery replaceText плагин .с помощью этого плагина я могу успешно заменить текст элемента следующим образом:

<div>some text to be replaced here.</div>
<script type="text/javascript">
$(function(){
    $("div").replaceText("some text to be replaced here", "a new text for replacement");
})
</script>

, однако, когда этот div становится примерно таким:

<div>some text to be <a href="somelink">replaced</a> here.</div>

замена не работает.

как мне поступить здесь?

Ответы [ 2 ]

1 голос
/ 30 октября 2011

Таким образом, вы хотите заменить подмножество текста другим подмножеством текста, и вы хотите работать между узлами.

Похоже, вы хотите Range .

Так что вам просто нужно сделать новый Range, используя document.createRange(). Укажите, где начинается ваш контент.

Так что просто найдите начальный узел и начальное смещение, а затем вызовите range.setStart(node, offset). Я бы предположил, что node будет вашим контейнером, а смещение только что вычислено.

Затем вызовите range.extractContents(), чтобы удалить исходный текст из DOM.

Затем просто range.insertNode(textNode), чтобы вставить следующий текст в DOM.

1 голос
/ 30 октября 2011

При работе с HTML страницы все теги находятся в потоке HTML, поэтому вы не можете просто выполнить прямую замену только текста без учета промежуточных тегов.

Это не таксоответствие "some text to be replaced here", потому что эта строка текста не существует как одна строка текста в этом HTML:

div>some text to be <a href="somelink">replaced</a> here.</div>

Вам придется заменить отдельные фрагменты текста, которые фактически существуют, как отдельные потоки текста, например"some text to be " и "replaced".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...