假设我有以下字符串:const test = "This is outside the HTML tag. <title>How to remove an HTML element using JavaScript ?</title>";
我想删除该字符串中所有HTML标记中的内容。我尝试过做test.replace(/(<([^>]+)>)/gi, '')
,但这只是删除了HTML标记,而不是其中的所有内容。我希望结果只会是‘这是HTML标记之外的’。
是否可以在字符串中删除和标记及其内容?
发布于 2022-11-21 02:55:59
与试图通过Regex删除HTML元素不同,使用以下方法创建和填充DOM片段要简单得多:
let myDiv = document.createElement('div');
myDiv.innerHTML = test;
然后使用以下方法从其中移除<title>
元素:
myDivTitle = myDiv.querySelector('title');
myDiv.removeChild(myDivTitle);
工作示例(一个元素):
const test = "This is outside the HTML tag. <title>How to remove an HTML element using JavaScript ?</title>";
let myDiv = document.createElement('div');
myDiv.innerHTML = test;
myDivTitle = myDiv.querySelector('title');
myDiv.removeChild(myDivTitle);
const testAfter = myDiv.innerHTML;
console.log(testAfter);
上面的内容适用于一个元素(<title>
),但您指出:
我想删除该字符串中所有
标记中的内容
因此,让我们尝试一些更有雄心的东西,使用:
myDiv.querySelectorAll('*')
工作示例(所有元素):
const test = "<title>How to remove an HTML element using JavaScript ?</title> This is outside the HTML tag. <h1>Here we go...</h1> So is this. <p>This is going to save a lot of time trying to come up with regex patterns</p> This too.";
let myDiv = document.createElement('div');
myDiv.innerHTML = test;
myDivElements = myDiv.querySelectorAll('*');
for (myDivElement of myDivElements) {
myDiv.removeChild(myDivElement);
}
const testAfter = myDiv.innerHTML;
console.log(testAfter);
发布于 2022-11-21 02:55:12
您可以通过在两个正则表达式之间放置通配符来替换这两个元素之间的所有内容。
const test = "This is outside the HTML tag. <title>How to remove an HTML element using JavaScript ?</title>";
console.log(test.replace(/(<([^>]+)>).*(<([^>]+)>)/, ''))
发布于 2022-11-21 03:00:00
你应该这样做:
var html = "<p>Hello, <b>Frields</b>";
var div = document.createElement("div");
div.innerHTML = html;
alert(div.innerText); // Hello, Frields
https://stackoverflow.com/questions/74517628
复制