Как очистить теги от строки с помощью JavaScript - PullRequest
4 голосов
/ 04 февраля 2011
<div id="mydiv">
    <p>
        <b><a href="mypage.html">This is an example<a>.</b>
        <br>
        This is another example.
    </p>
</div>

<script type="text/javascript">
    var mystr = document.getElementById('mydiv').innerHTML;
    .....
</script>

Я хочу очистить все теги и получить солевой текст,

mystr = "This is an example this is another example.";

Как я могу это сделать?

Ответы [ 4 ]

10 голосов
/ 04 февраля 2011

Использование innerText и textContent:

var element = document.getElementById('mydiv');
var mystr = element.innerText || element.textContent;
  • innerText поддерживается всеми браузерами, кроме FF
  • textContent поддерживается всеми браузерами, кроме IE

DEMO

Я только что увидел, что строка все еще будет содержать разрывы строк. Вы можете удалить их с помощью replace:

mystr = mystr.replace(/\n/g, "");

Обновление:

Как указывает @ Šime Vidas в своем комментарии, вам кажется, что для исправления строки в IE нужно по-другому обрабатывать пробелы:

mystr = mystr.replace(/\s+/g, ' ');
2 голосов
/ 04 февраля 2011

Здесь другой подход - удалите теги с помощью замены регулярным выражением:

document.getElementById('mydiv').innerHTML.replace(/\n|<.*?>/g,'')

Вот скрипка

1 голос
/ 04 февраля 2011

Попробуйте:

document.getElementById('mydiv').innerText || document.getElementById('mydiv').textContent;
0 голосов
/ 04 февраля 2011

Вы можете просмотреть все дочерние элементы и прочитать с них .innerText. Затем вы можете легко объединить текст каждого дочернего элемента и получить весь текст без тегов.

...