Czy istnieje sposób na przekonwertowanie HTML na zwykły tekst bez zapisywania go do selektora za pomocą Jquery?


Rozumiem, że w Jquery za pomocą funkcji html () możemy przekonwertować HTML na tekst, na przykład
$("#myDiv").html(result);

konwertuje „wynik” (który jest kodem html) na zwykły tekst i wyświetla go w myDiv.
Teraz moje pytanie brzmi: czy istnieje sposób, w jaki mogę po prostu przekształcić kod HTML i umieścić go w zmiennej?
na przykład:
var temp;
temp = html(result);

coś takiego oczywiście nie działa, ale jak mogę wstawić przekonwertowaną zmienną bez zapisywania jej na ekranie? Ponieważ sprawdzam przekształcone w pętli, pomyślałem, że byłoby raczej stratą zasobów, aby zapisywać je na ekranie dla każdej pojedynczej pętli.

Edytować

:
Przepraszamy za zamieszanie, na przykład jeśli wynikiem jest
„& < p & > abc & </p & >”
, a następnie
$ (# mydiv) .html ( result)
powoduje, że mydiv wyświetla
„abc”
, który „konwertuje” kod HTML na zwykły tekst, usuwając tagi
& < p & >
. Jak więc umieścić
"abc"
w zmiennej bez wykonywania czegoś takiego jak
var temp = $ (# mydiv) .text ()
?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Nie, metoda
html
nie zamienia kodu HTML na tekst, zamienia kod HTML na elementy DOM. Przeglądarka przeanalizuje kod HTML i utworzy z niego elementy.
Nie musisz umieszczać kodu HTML na stronie, aby przeanalizować ją na elementy, możesz to zrobić w niezależnym elemencie:
var d = $('<div>').html(result);

Masz teraz obiekt jQuery zawierający element
div
, w którym elementy z przeanalizowanego kodu HTML są dziećmi. Lub:
var d = $(result);

Masz teraz obiekt jQuery zawierający elementy z przeanalizowanego kodu HTML.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Brak rozwiązania-jQuery tutaj:
function htmlToText(html) {
var temp = document.createElement('div');
temp.innerHTML = html;
return temp.textContent;// Or return temp.innerText if you need to return only visible text. It's slower.
}

Działa świetnie w IE ≥9.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Możesz po prostu usunąć wszystkie tagi HTML:
var text = html.replace(/(<([^>]+)>)/g, "");
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dlaczego nie użyć
.text ()
$("#myDiv").html($(result).text());
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

możesz spróbować:
var tmp = $("<div>").attr("style","display:none");
var html_text = tmp.html(result).text();
tmp.remove();

Ale sposób modyfikowania łańcucha przez wyrażenia regularne jest prostszy, ponieważ nie używa przechodzenia przez DOM.
Możesz zamienić kod HTML na ciąg tekstowy na wyrażenie regularne, tak jak w odpowiedzi użytkownika
Crozin
.

P.S.

Może Ci się również spodobać sposób, w jaki
& < br & >
jest zastępowany nowymi wierszami:
var text = html.replace(/<\s*br[^>]?>/,'\n')
.replace(/(<([^>]+)>)/g, "");
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Var temp = $ (your_selector) .html ();
zmienna temp to ciąg znaków zawierający HTML
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

$ ("# myDiv"). html (result);
nie formatuje tekstu w kodzie html. Możesz użyć
.html ()
do zrobienia kilku rzeczy.
jeśli powiesz
$ ("# myDiv"). html ();
tam, gdzie nie przekazujesz parametrów do funkcji „html ()”, oznacza to „POBIERANIE” - to jest obecnie kod HTML w tym elemencie DIV.
więc możesz powiedzieć
var whatsInThisDiv = $("#myDiv").html();
console.log(whatsInThisDiv);//will print whatever is nested inside of <div id="myDiv">

jeśli przekażesz parametr z wywołaniem
.html ()
, ustawisz kod HTML na wszystko, co jest zapisane w przekazanej zmiennej lub ciągu. na przykład
var htmlToReplaceCurrent = '<div id="childOfmyDiv">Hi! Im a child.';
$("#myDiv").html(htmlToReplaceCurrent);

To sprawi, że Twój dom będzie wyglądał tak ...
<div id="myDiv">
<div id="childOfmyDiv">Hi! Im a child.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się