到目前为止我理解在Jquery中,用html()函数,我们可以把HTML转换成文本,比如,
$("#myDiv").html(result);
将"result"(html代码)转换为普通文本并在myDiv中显示。
现在,我的问题是,有没有一种方法可以简单地转换html并将其放入变量中?
例如:
var temp;
temp = html(result);
像这样的东西,当然这是行不通的,但是我怎么能把转换成一个变量而不把它写在屏幕上呢?因为我在循环中检查转换,我认为如果每一个循环都把它写在屏幕上,这是相当浪费资源的。
- 编辑:**
很抱歉造成了混淆,例如,如果result是" <p>abc</p> "
,那么$(#mydiv).html(result)
会使mydiv显示"abc"
,它通过移除<p>
标签将html "转换"为普通文本。那么,我如何才能将"abc"
放入变量中而不执行类似var temp=$(#mydiv).text()
的操作呢?
9条答案
按热度按时间mitkmikd1#
下面是无jQuery解决方案:
在IE ≥9时效果很好。
mbskvtky2#
不,
html
方法不会将HTML代码转换为文本,而是将HTML代码转换为DOM元素,浏览器会解析HTML代码并从中创建元素。你不需要把HTML代码放到页面中,就可以把它解析成元素,你可以在一个独立的元素中完成:
现在您有了一个jQuery对象,其中包含一个
div
元素,该元素将解析后的HTML代码中的元素作为子元素。现在,您有了一个jQuery对象,其中包含来自解析后的HTML代码的元素。
zfciruhq3#
您可以简单地剥离所有HTML标记:
ljsrvy3e4#
为什么不使用
.text()
yzckvree5#
您可以尝试:
但是使用正则表达式修改字符串的方法更简单,因为它不使用DOM遍历。
你可以用regexp替换html到文本字符串,就像用户
Crozin
的回答。<br>
替换为换行符的方式:p4tfgftt6#
变量temp = $(您的选择器).html();
变量temp是包含HTML的字符串
vx6bjr1n7#
$("#myDiv").html(result);
没有将文本格式化为html代码。您可以使用.html()
来做一些事情。如果你说
$("#myDiv").html();
,你没有传递参数给'html()'函数,那么你就是在“获取”当前在div元素中的html。如果你在
.html()
调用中传入一个参数,你将把html设置成你传入的变量或字符串中存储的内容。会让你的地盘变成这样...
p1tboqfb8#
最简单、安全的解决方案-使用Dom Parser
对于更高级的用法-我建议您尝试Dompurify
它是跨浏览器的(并支持节点js)。只有19 kb的gzip
下面是我创建的将HTML转换为文本的fiddle
输入:
Hello <script>in script<\/script> <b>world</b><p> Many other <br/>tags are stripped</p>
输出:
Hello world Many other tags are stripped
brccelvz9#
使用dom有几个缺点。在其他答案中没有提到的一个:将加载媒体,导致网络流量。
我建议在将某些标记(如br、p、ol、ul和header)替换为\n换行符之后,使用正则表达式删除这些标记。