Javascript 如何从HTML字符串中提取文本内容而不创建HtmleElement?
我最近遇到了一个问题,在将数据显示在屏幕上之前,我需要从数据中删除html标记。Javascript 如何从HTML字符串中提取文本内容而不创建HtmleElement?,javascript,html,Javascript,Html,我最近遇到了一个问题,在将数据显示在屏幕上之前,我需要从数据中删除html标记。 数据是这样来的: <p><span style="color: rgb(68, 68, 68);">Sample data which i want to get.</span></p> 以上代码取自stackoverflow 问题 我担心这样做是否正确,因为每次调用strip函数时都会创建额外的div 问题 有没有更好的方法来实现这一点?Hi要获取特定div的HT
数据是这样来的:
<p><span style="color: rgb(68, 68, 68);">Sample data which i want to get.</span></p>
以上代码取自stackoverflow
问题我担心这样做是否正确,因为每次调用
strip
函数时都会创建额外的div
问题有没有更好的方法来实现这一点?Hi要获取特定div的HTML,可以使用“refs”
React REF与jquery中的id一样工作。使用REF,您可以轻松获取该div的内容或任何其他参数。还有一种从HTML字符串获取文本的方法:。
它支持所有浏览器() 下面是一个如何使用它的示例:
功能条(html){
var doc=new DOMParser().parseFromString(html,'text/html');
返回doc.body.textContent | |“”;
}
您不必每次都创建新元素。创建一个类,创建一次div,并将其存储为实例属性。然后,每次需要剥离一些HTML时,只需用新内容覆盖现有内容并返回文本内容
类剥离器
{
构造函数(){
此._target=document.createElement(“div”)
}
条带(html){
这是。_target.innerHTML=html
返回此。_target.textContent | | this。_target.innerText | |”
}
}
常量剥离器=新剥离器()
log(stripper.strip(/*您的html*/)
也许这对你有帮助
下面的示例使用另一种方法。它不提取文本,而是使用正则表达式(假设数据是html字符串)删除标记
限制:如果文本内容包含<或>字符,则此正则表达式不起作用。如果这是一个问题,您需要修改正则表达式
var-str='我想要得到的样本数据。';
var str2='我希望得到的样本数据。;
功能条(html){
返回html.replace(/]*>/gi',);
}
控制台日志(strip(str));
控制台日志(strip(str2))代码>什么是其他方法?考虑详细解释你的情况。你有问题。如前所述,通常您必须在React中避免此类事情。@EddeAlmeida只要没有.appendChild
完成,这不是很好吗?我同意,但如果OP从XHR响应中获取HTML字符串呢?@EddeAlmeida没有人在操纵DOM。重新阅读代码。嗨,德瓦卡,问题是创建额外的div是否好。为什么要在可以使用state的情况下创建额外的div?如果要创建div,那么方法应该是创建一个组件,并将数据作为道具传递,以便更容易获取和附加数据
function strip(html)
{
var tmp = document.createElement("DIV");
tmp.innerHTML = html;
return tmp.textContent || tmp.innerText || "";
}