Есть ли способ конвертировать HTML в обычный текст, не записывая его в селектор с помощью Jquery? - PullRequest
12 голосов
/ 28 ноября 2011

Насколько я понимаю, в Jquery с помощью функции html () мы можем преобразовать HTML в текст, например,

$("#myDiv").html(result);

преобразует «результат» (который является HTML-кодом) в обычный тексти отобразить его в myDiv.

Теперь мой вопрос: есть ли способ, которым я могу просто преобразовать HTML и поместить его в переменную?

, например:

var temp;
temp = html(result);

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

Редактировать:

Извините за путаницу, например, если результат равен " <p>abc</p> ", то $(#mydiv).html(result) заставляет mydiv отображать "abc", который «преобразует» html в обычный текст, удаляя теги <p>.Так как же я могу поместить "abc" в переменную, не делая что-то вроде var temp=$(#mydiv).text()?

Ответы [ 7 ]

7 голосов
/ 28 ноября 2011

Нет, метод html не превращает код HTML в текст, он превращает код HTML в элементы DOM.Браузер проанализирует HTML-код и создаст из него элементы.

Вам не нужно помещать HTML-код на страницу, чтобы разбирать его на элементы, вы можете сделать это в независимом элементе:

var d = $('<div>').html(result);

Теперь у вас есть объект jQuery, который содержит элемент div, в котором элементы из проанализированного HTML-кода являются дочерними.Или:

var d = $(result);

Теперь у вас есть объект jQuery, который содержит элементы из проанализированного HTML-кода.

4 голосов
/ 28 ноября 2011

Почему бы не использовать .text()

$("#myDiv").html($(result).text());
4 голосов
/ 28 ноября 2011

Вы можете просто удалить все теги HTML:

var text = html.replace(/(<([^>]+)>)/g, "");
3 голосов
/ 26 августа 2016

Вот решение без jQuery:

function html2text( html ) {
    var d = document.createElement( 'div' );
    d.innerHTML = html;
    return d.textContent;
}

Отлично работает в IE ≥9.

3 голосов
/ 28 ноября 2011

вы можете попробовать:

var tmp = $("<div>").attr("style","display:none");
var html_text = tmp.html(result).text();
tmp.remove();

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

Вы можете заменить html на текстовую строку регулярным выражением, как в ответе пользователя Crozin.

приписка Также вам может понравиться способ замены <br> символами новой строки:

var text = html.replace(/<\s*br[^>]?>/,'\n')
            .replace(/(<([^>]+)>)/g, "");
0 голосов
/ 28 ноября 2011

$("#myDiv").html(result); не форматирует текст в HTML-код. Вы можете использовать .html(), чтобы сделать пару вещей.

если вы говорите $("#myDiv").html();, где вы не передаете параметры в функцию `html () ', тогда вы« ПОЛУЧАЕТЕ »html, который в данный момент находится в этом элементе div. так что вы могли бы сказать,

var whatsInThisDiv = $("#myDiv").html();
console.log(whatsInThisDiv); //will print whatever is nested inside of <div id="myDiv"></div>

если вы передадите параметр с помощью вызова .html(), вы установите html на то, что хранится в передаваемой переменной или строке. Например

var htmlToReplaceCurrent = '<div id="childOfmyDiv">Hi! Im a child.</div>';
$("#myDiv").html(htmlToReplaceCurrent);

Это заставит твою дом выглядеть так ...

<div id="myDiv">
    <div id="childOfmyDiv">Hi! Im a child.</div>
</div>
0 голосов
/ 28 ноября 2011

var temp = $ (your_selector) .html ();

переменная temp является строкой, содержащей HTML

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