Есть ли способ конвертировать HTML в обычный текст без фактической записи его в селектор с JQuery?

Я до сих пор понимаю, что в JQuery с функцией html() мы можем преобразовать HTML в текст, например,

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

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

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

например:

var temp;
temp = html(result);

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

Edit:

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

Ответ 1

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

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

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

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

var d = $(result);

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

Ответ 2

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

var text = html.replace(/(<([^>]+)>)/g, "");

Ответ 3

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

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

Ответ 4

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

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

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

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

P.S. Также вам может понравиться, когда <br> заменяет символы новой строки:

var text = html.replace(/<\s*br[^>]?>/,'\n')
            .replace(/(<([^>]+)>)/g, "");

Ответ 5

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

переменная temp - это строка, содержащая HTML

Ответ 6

$("#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>

Ответ 7

Вот решение no-jQuery:

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

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