Rozumiem do tej pory, że w jQuery, z funkcją HTML (), możemy konwertować HTML w tekst, na przykład, na przykład,

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

Konwertuje "wynik" (który jest kodem HTML) w normalny tekst i wyświetla go w mydiv.

Teraz moje pytanie brzmi, czy istnieje sposób, w jaki mogę po prostu przekonwertować HTML i umieścić go w zmiennej?

Na przykład:

var temp;
temp = html(result);

Coś takiego jak to oczywiście nie działa, ale jak mogę umieścić przekonwertowane w zmienną bez napisania na ekranie? Odkąd sprawdzam przekonwertowane w pętli, pomyślałem, że jest to całkiem i marnowanie zasobów, jeśli piszę go do ekranu dla każdej pętli.

Edytuj:

Przepraszamy za zamieszanie, na przykład, jeśli wynik jest " <p>abc</p> " następnie $(#mydiv).html(result) sprawia, że wyświetlacz Mydiv "abc", który "konwertuje" HTML w normalny tekst, usuwając znaczniki <p>. Więc jak mogę umieścić "abc" do zmiennej bez robienia czegoś takiego jak var temp=$(#mydiv).text()?

13
eastboundr 28 listopad 2011, 21:24

7 odpowiedzi

Najlepsza odpowiedź

Nie, metoda html nie zamienia kodu HTML w tekście, zamienia kod HTML w elementy DOM. Przeglądarka przeanalizuje kod HTML i utworzy z niego elementy.

Nie musisz umieścić kodu HTML do strony, aby przenikał do elementów, możesz to zrobić w niezależny element:

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

Teraz masz obiekt jQuery, który zawiera element div, który ma elementy z analizowanego kodu HTML jako dzieci. Lub:

var d = $(result);

Teraz masz obiekt jQuery, który zawiera elementy z analizowanego kodu HTML.

9
Guffa 28 listopad 2011, 17:31

Dlaczego nie używać .text()

$("#myDiv").html($(result).text());
4
Diodeus - James MacFarlane 28 listopad 2011, 17:28

Oto rozwiązanie nie-jQuery:

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

Działa świetnie w IE ≥9.

8
Finesse 5 czerwiec 2020, 06:31

Możesz po prostu usunąć wszystkie tagi HTML:

var text = html.replace(/(<([^>]+)>)/g, "");
5
Crozin 28 listopad 2011, 17:28

Możesz spróbować:

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

Ale droga z modyfikującym ciągu z wyrażeniem regularnym jest prostsza, ponieważ nie używa Domu Traversal.

Możesz zastąpić ciąg HTML do tekstu z regexa, jak w odpowiedzi użytkownika Crozin.

P.S. Również możesz podać sposób, gdy <br> zastępuje się symbolami Newline:

var text = html.replace(/<\s*br[^>]?>/,'\n')
            .replace(/(<([^>]+)>)/g, "");
4
Larry Cinnabar 28 listopad 2011, 18:32

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

Zmienna temp jest ciągiem zawierającym HTML

0
Toni Toni Chopper 28 listopad 2011, 17:30

$("#myDiv").html(result); nie jest formatowanie tekstu do kodu HTML. Możesz użyć .html(), aby zrobić kilka rzeczy.

Jeśli powiesz $("#myDiv").html();, gdzie nie przechodzisz w parametry do funkcji `HTML ()", to "dostajesz" HTML, który jest obecnie w tym elemencie DIV. więc można powiedzieć,

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

Jeśli przejdziesz w parametrze za pomocą {x0}} wywołaj, będzie ustawiony HTML do tego, co jest przechowywane wewnątrz zmiennej lub ciąg, którą przechodzisz. Na przykład

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

To opuści twoją dom tak wyglądać ...

<div id="myDiv">
    <div id="childOfmyDiv">Hi! Im a child.</div>
</div>
0
Tim Joyce 28 listopad 2011, 17:34