Gibt es einen einfachen Weg, um eine Zeichenfolge von HTML in JavaScript zu nehmen und entfernen Sie die HTML?
Wenn Sie in einem Browser arbeiten, ist es am einfachsten, wenn Sie [den Browser das für Sie erledigen lassen...](
)function stripHtml(html)
{
var tmp = document.createElement("DIV");
tmp.innerHTML = html;
return tmp.textContent || tmp.innerText || "";
}
Hinweis: Wie in den Kommentaren angemerkt wurde, ist dies am besten zu vermeiden, wenn Sie keine Kontrolle über die Quelle des HTML haben (z.B. lassen Sie es nicht auf etwas laufen, das von einer Benutzereingabe stammen könnte). Für diese Szenarien können Sie immer noch den Browser die Arbeit für Sie erledigen lassen - siehe Saba's Antwort auf die Verwendung des jetzt weit verbreiteten DOMParser.
myString.replace(/<[^>]*>?/gm, '');
Eine andere, zugegebenermaßen weniger elegante Lösung als die von nickf' s oder Shog9' s, wäre es, das DOM ab dem
Tag rekursiv zu durchlaufen und jeden Textknoten anzuhängen.var bodyContent = document.getElementsByTagName('body')[0];
var result = appendTextNodes(bodyContent);
function appendTextNodes(element) {
var text = '';
// Loop through the childNodes of the passed in element
for (var i = 0, len = element.childNodes.length; i < len; i++) {
// Get a reference to the current child
var node = element.childNodes[i];
// Append the node's value if it's a text node
if (node.nodeType == 3) {
text += node.nodeValue;
}
// Recurse through the node's children, if there are any
if (node.childNodes.length > 0) {
appendTextNodes(node);
}
}
// Return the final result
return text;
}