Есть ли способ преобразовать HTML в обычный текст, не записывая его в селектор с помощью Jquery?
Я так понимаю, что в Jquery с помощью функции html () мы можем конвертировать HTML в текст, например,
$("#myDiv").html(result);
Преобразует "result" (который является html-кодом) в обычный текст и отображает его в myDiv.
Теперь мой вопрос: есть ли способ, которым я могу просто преобразовать html и поместить его в переменную?
Например:
var temp;
temp = html(result);
Что-то вроде этого, конечно это не работает, но как я могу поместить преобразованный в переменную без записи его на экран? С Я проверяю преобразованное в цикле, подумал, что это довольно и пустая трата ресурсов, если продолжать записывать его на экран для каждого отдельного цикла.
Редактировать:
Извините за путаницу, например, если результат " <p>abc</p> ", то $(#mydiv).html(result) делает mydiv display "abc", который "преобразует" html в обычный текст, удаляя теги <p>. Итак, как я могу поместить "abc" в переменную, не делая что-то вроде var temp=$(#mydiv).text()?
7 ответов:
Нет, Метод
htmlне превращает HTML-код в текст, он превращает HTML-код в элементы DOM. Браузер будет анализировать HTML-код и создавать из него элементы.Вам не нужно помещать HTML-код на страницу, чтобы он был разбит на элементы, вы можете сделать это в независимом элементе:
var d = $('<div>').html(result);Теперь у вас есть объект jQuery, который содержит элемент
div, содержащий элементы из разбираемого HTML-кода в качестве дочерних элементов. Или:var d = $(result);Теперь у вас есть объект jQuery, который содержит элементы из разбираемого HTML-кода.
Вы можете попробовать:
var tmp = $("<div>").attr("style","display:none"); var html_text = tmp.html(result).text(); tmp.remove();Но способ модификации строки с регулярным выражением проще, потому что он не использует DOM-обход.
Вы можете заменить html на текстовую строку регулярным выражением, как в ответе пользователя
Crozin.P.S. Также вам может понравиться способ, когда
<br>заменяется символами новой строки:var text = html.replace(/<\s*br[^>]?>/,'\n') .replace(/(<([^>]+)>)/g, "");
Вот решение no-jQuery:
function html2text( html ) { var d = document.createElement( 'div' ); d.innerHTML = html; return d.textContent; }Отлично работает в IE ≥9.
$("#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>
Comments