Existe uma maneira de converter HTML em texto normal sem realmente escrevê-lo para um seletor com Jquery?

eu entendo até agora que em jQuery, com a função html (), podemos converter HTML em texto, por exemplo,

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

converte o "resultado" (que é o código html) em texto normal e exibe-o no myDiv.

Agora, minha pergunta é, existe uma maneira de eu simplesmente converter o html e colocá-lo em uma variável?

por exemplo:

var temp;
temp = html(result);
Algo assim, claro que isto não funciona, mas como posso colocar o convertido numa variável sem escrevê-lo ao ecrã? Desde que eu estou checando o convertido em um loop, pensei que é bastante e desperdício de recursos se continuar escrevendo-o para a tela para cada loop único.

Editar:

Desculpe a confusão, por exemplo, se o resultado for " <p>abc</p> " então $(#mydiv).html(result) faz o mydiv display "abc", que "converte" html em texto normal, removendo as marcas <p>. Então, como posso colocar "abc" numa variável sem fazer algo como var temp=$(#mydiv).text()?

Author: hugomg, 2011-11-28

7 answers

Não, o método html não transforma o código HTML em texto, transforma o código HTML em elementos DOM. O navegador irá processar o código HTML e criar elementos a partir dele.

Você não tem que colocar o código HTML na página para tê-lo processado em elementos, você pode fazer isso em um elemento independente:

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

Agora você tem um objeto jQuery que contém um elemento div que tem os elementos do código HTML processado como crianças. Ou:

var d = $(result);
Agora tens um objecto jQuery. que contém os elementos do código HTML processado.
 6
Author: Guffa, 2011-11-28 17:31:02

Pode simplesmente remover todas as marcas de HTML:

var text = html.replace(/(<([^>]+)>)/g, "");
 4
Author: Crozin, 2011-11-28 17:28:06

Por que não utilizar .text()

$("#myDiv").html($(result).text());
 3
Author: Diodeus - James MacFarlane, 2011-11-28 17:28:10
Pode tentar.
var tmp = $("<div>").attr("style","display:none");
var html_text = tmp.html(result).text();
tmp.remove();

Mas o modo como se modifica a cadeia com expressão regular é mais simples, porque não usa DOM traversal.

Pode substituir o html pelo texto com a expressão regular, como em resposta ao Utilizador Crozin.

P. S. Também poderá gostar do modo como <br> está a substituir por símbolos de linha nova:

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

Aqui está a solução de não-jQuery:

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

Funciona muito bem no IE ≥9.

 2
Author: Finesse, 2016-08-26 02:38:20

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

A variável temp é um texto que contém o HTML

 0
Author: Toni Toni Chopper, 2011-11-28 17:30:18

$("#myDiv").html(result); não está a formatar o texto para o código html. Você pode usar .html() para fazer algumas coisas.

Se disser $("#myDiv").html(); onde não está a passar parâmetros para a função ' html ()', então está a "obter" o html que está neste momento nesse elemento div. então você poderia dizer,

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

Se passar num parâmetro com a sua chamada .html() estará a configurar o html para o que está guardado dentro da variável ou texto que passar. Por exemplo

var htmlToReplaceCurrent = '<div id="childOfmyDiv">Hi! Im a child.</div>';
$("#myDiv").html(htmlToReplaceCurrent);
Isso vai deixar o teu dom com este aspecto...
<div id="myDiv">
    <div id="childOfmyDiv">Hi! Im a child.</div>
</div>
 0
Author: Tim Joyce, 2011-11-28 17:34:46