Есть ли способ конвертировать 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.