有没有办法将HTML转换为普通文本而不用Jquery实际将其写入选择器?

eas*_*ndr 12 html javascript jquery dom

到目前为止我理解在Jquery中,使用html()函数,我们可以将HTML转换为文本,例如,

$("#myDiv").html(result);
Run Code Online (Sandbox Code Playgroud)

将"result"(即html代码)转换为普通文本并将其显示在myDiv中.

现在,我的问题是,有没有办法可以简单地转换html并将其放入变量?

例如:

var temp;
temp = html(result);
Run Code Online (Sandbox Code Playgroud)

这样的事情,当然这不起作用,但是如何将转换成变量而不将其写入屏幕?因为我正在检查循环中的转换,所以如果继续将它写入屏幕中的每一个循环,那就认为这是浪费资源.

编辑:

遗憾的混乱,例如,如果结果是" <p>abc</p> "然后$(#mydiv).html(result)使mydiv显示"abc",其通过去除的HTML"转换"到正常的文本<p>标签.那么如何"abc"在不做类似事情的情况下放入变量var temp=$(#mydiv).text()呢?

Fin*_*sse 9

这是无 jQuery 解决方案:

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.
}
Run Code Online (Sandbox Code Playgroud)

在 IE 中运行良好?9。

  • [MDN 指定](https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML#security_considerations) 尽管您无法在其中运行脚本,但您仍然可以运行恶意 XSS 代码,例如`const name = "&lt;img src='x' onerror='alert(1)'&gt;"; el.innerHTML = 名称;// 显示警报` " (3认同)

Guf*_*ffa 8

不,该html方法不会将HTML代码转换为文本,而是将HTML代码转换为DOM元素.浏览器将解析HTML代码并从中创建元素.

您不必将HTML代码放入页面以将其解析为元素,您可以在独立元素中执行此操作:

var d = $('<div>').html(result);
Run Code Online (Sandbox Code Playgroud)

现在你有了一个jQuery对象,它包含一个div元素,该元素将解析后的HTML代码中的元素作为子元素.要么:

var d = $(result);
Run Code Online (Sandbox Code Playgroud)

现在您有一个jQuery对象,其中包含已解析的HTML代码中的元素.


Cro*_*zin 7

您可以简单地去除所有 HTML 标签:

var text = html.replace(/(<([^>]+)>)/g, "");
Run Code Online (Sandbox Code Playgroud)

  • 这并没有解决 &lt;   等等 (2认同)

Lar*_*bar 6

你可以试试:

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

但用正则表达式修改字符串的方式更简单,因为它不使用DOM遍历。

您可以使用正则表达式将 html 替换为文本字符串,就像 user 的回答一样Crozin

PS<br>您也可能喜欢用换行符替换的 方式:

var text = html.replace(/<\s*br[^>]?>/,'\n')
            .replace(/(<([^>]+)>)/g, "");
Run Code Online (Sandbox Code Playgroud)