Есть ли способ преобразовать 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()?

623   7  

7 ответов:

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

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

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

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

var d = $(result);

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

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

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

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

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

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

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.

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

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

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

    Ничего не найдено.