我正在尝试使用 JS 函数获取 HTML 字符串的内部文本(字符串作为参数传递)。这是代码:
function extractContent(value) {
var content_holder = "";
for (var i = 0; i < value.length; i++) {
if (value.charAt(i) === '>') {
continue;
while (value.charAt(i) != '<') {
content_holder += value.charAt(i);
}
}
}
console.log(content_holder);
}
extractContent("<p>Hello</p><a href='http://w3c.org'>W3C</a>");
问题是控制台上没有打印任何内容(*content_holder* 保持为空)
。我认为问题是由 ===
运算符引起的。
最佳答案
创建一个元素,将 HTML 存储在其中,并获取其 textContent
:
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>"));
这是一个允许您在节点之间留有空格的版本,尽管您可能只希望它用于 block 级元素:
function extractContent(s, space) {
var span= document.createElement('span');
span.innerHTML= s;
if(space) {
var children= span.querySelectorAll('*');
for(var i = 0 ; i < children.length ; i++) {
if(children[i].textContent)
children[i].textContent+= ' ';
else
children[i].innerText+= ' ';
}
}
return [span.textContent || span.innerText].toString().replace(/ +/g,' ');
};
console.log(extractContent("<p>Hello</p><a href='http://w3c.org'>W3C</a>. Nice to <em>see</em><strong><em>you!</em></strong>"));
console.log(extractContent("<p>Hello</p><a href='http://w3c.org'>W3C</a>. Nice to <em>see</em><strong><em>you!</em></strong>",true));
关于javascript - 使用 JavaScript 从 HTML 字符串中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28899298/