我要从Wordpress api返回帖子,目前正在获取一个数组,其中包含帖子。我可以返回一个字符串,但其中包含HTML标记。我已经使用了textContent和innerText,但是似乎没有用。
我目前正在返回<p> info: 111,<br /> key: fdfd ,<br /> city: ,<br /> suburb: ,<br /> job: </p>
top返回没有<p>
和<br>
的内容的最佳方式是什么?
答案 0 :(得分:0)
您需要将字符串转换为HTML页面,然后定位“ p”元素并提取其文本。像这样:
var p = "<p> info: 111,<br /> key: fdfd ,<br /> city: ,<br /> suburb: ,<br /> job: </p>"
var parser = new DOMParser();
var htmlDoc = parser.parseFromString(p, 'text/html');
console.log(htmlDoc.body.getElementsByTagName("P")[0].innerText);
答案 1 :(得分:0)
这更多是另一种常见警告方式。
ATD提到的DOMParser()
的常见替代方法是创建一个元素,将其添加为innerHTML
并使用textContent
进行获取。
let tParser = document.createElement('div');
tParser.innerHTML = "<p> info: 111,<br /> key: fdfd ,<br /> city: ,<br /> suburb: ,<br /> job: </p>";
console.log(tParser.textContent)
请注意使用innerHTML
带来的风险。一切都将解释为HTML并从您的网站执行。也就是说,不不要将其添加到DOM或更好,请尝试完全避免使用它。
此外,MDN还提到以下内容:
如果您的项目是将接受任何形式的安全检查的项目, 使用innerHTML最有可能导致您的代码被拒绝。 例如,如果您在浏览器扩展中使用innerHTML并提交 addons.mozilla.org的扩展名,它不会通过自动 审核过程。
答案 2 :(得分:0)
您的问题已经回答:
function extractContent(s) {
var span = document.createElement('span');
span.innerHTML = s;
return span.textContent || span.innerText;
};
alert(extractContent("<p>Hello</p><a href='http://w3c.org'>W3C</a>"));