除了使用ES6 Javascript删除标记外,是否删除页面中的所有html标记?

除了使用ES6 Javascript删除标记外,是否删除页面中的所有html标记?,javascript,html,Javascript,Html,我希望使用ES6JavaScript无jQuery删除页面bodyContent div id中的所有html标记,以及标记 该页面是一篇相当长的维基百科文章,显示了大量的p、span以及img等文本 在p和span中,有许多a标记。实际上,大约99.9%的p标签至少包含1个a标签 使用以下代码删除所有内部没有a的p标记无效,因为只删除了约0.1%的文本: for (const text of document.querySelectorAll("p")) { if (!text.que

我希望使用ES6JavaScript无jQuery删除页面bodyContent div id中的所有html标记,以及标记

该页面是一篇相当长的维基百科文章,显示了大量的p、span以及img等文本

在p和span中,有许多a标记。实际上,大约99.9%的p标签至少包含1个a标签

使用以下代码删除所有内部没有a的p标记无效,因为只删除了约0.1%的文本:

for (const text of document.querySelectorAll("p")) {
    if (!text.querySelector("a")) {
        text.style.display = "none";
    }
}
我需要一个解决方案,将删除页面的bodyContent div中的所有内容,这不是一个标签


最终产品应该是一个只包含a链接的Wiki网页。

您可以从p元素中选择所有a元素,并用a元素替换内容。比如:

const content = document.querySelector('#bodyContent');
let links = content.querySelectorAll('a');
content.innerHtml = '';
links.foreach(a => {
    content.appendChild(a);
});

只需删除所有内容,然后将链接放回:

const el = document.querySelector("div#bodyContent");
const links = el.querySelectorAll("a");
while (el.hasChildNodes())
    el.removeChild(el.firstChild);
for (const link of links)
    el.appendChild(link);

执行querySelectorAlla并将它们移动到所需的目标区域,然后处理原始元素会容易得多。您希望元素内部、之间和外部的文本发生什么变化?标记内的文本应保持原样。在这一页中,他们之外的一切都应该消失。@Bergi,你将在哪里展示它?在一些新元素?中,如createElement,然后document。将带有标记的变量写入这个新元素?在一些新元素或旧元素中-看看下面我的答案。不,不要使用document.write。