Javascript 如何将整个HTML文档作为字符串(不包括某些元素)获取?
我正在寻找一种获取整个HTML文档的方法,将一些项目(可能带有名为“exclude”的类名)作为字符串排除在外。 我知道我可以用Javascript 如何将整个HTML文档作为字符串(不包括某些元素)获取?,javascript,html,Javascript,Html,我正在寻找一种获取整个HTML文档的方法,将一些项目(可能带有名为“exclude”的类名)作为字符串排除在外。 我知道我可以用document.documentElement.innerHTML 或document.documentElement.outerHTML 和document.getElementsByTagName('html')[0]。innerHTML 我仍在努力解决的问题是,在获取innerHTML之前,如何排除一些节点(例如按钮、div或任何其他具有公共类名的标记?我可能会
document.documentElement.innerHTML
或document.documentElement.outerHTML
和document.getElementsByTagName('html')[0]。innerHTML
我仍在努力解决的问题是,在获取innerHTML之前,如何排除一些节点(例如按钮、div或任何其他具有公共类名的标记?我可能会克隆整个树,然后删除不需要的元素:
var clone = document.body.cloneNode(true);
clone.querySelectorAll(".exclude").forEach(function(element) {
element.parentNode.removeChild(element);
});
var html = clone.outerHTML;
请注意,这假定主体本身没有排除类
例如:
var clone=document.body.cloneNode(true);
//特定于代码段:同时删除脚本
clone.querySelectorAll(“.exclude,script”).forEach(函数(元素){
element.parentNode.removeChild(元素);
});
var html=clone.outerHTML;
console.log(html);
我想要这个
还有这个
我不要这个
或者这个,因为它的父对象被排除在外
您可以在HTML块上使用和来排除不需要的元素
var content = document.getElementsByTagName('html')[0]
var selection = content.querySelectorAll('*:not(.ignore)');
然后只需使用outerHTML
即可从您的选择中获取全部内容
:
var htmlString = selection[0].outerHTML;
否则,您可以在选择
元素上循环,并为每个元素将其HTML附加到结果字符串
:
var htmlString = "";
selection.forEach(function(el) {
htmlString += el.innerHTML;
});
演示:
var content=document.getElementsByTagName('html')[0]
var selection=content.querySelectorAll('*:not(.ignore');
//然后记录选择内容
console.log(选择[0].outerHTML);
//或者循环遍历元素并获取其内容
var htmlString=“”;
selection.forEach(函数(el){
htmlString+=el.innerHTML;
});
console.log(htmlString);
我知道我参加聚会迟到了,但这是我的贡献,我使用了chŝdk的想法来实现它
let markup=document.querySelectorAll('*:not(.exclude)][0].innerHTML;
log(“数据类型:”+typeof(标记));
console.log(标记);
你好,世界
你好,世界[排除我]
你好,世界
你好,世界
你好,世界
你好,世界[排除我]
你好,世界[排除我]
你好,世界
你好,世界
你好,世界[排除我]
您必须从DOM中删除不需要的元素。谢谢:)这实际上是可行的,它排除了节点。问题是-有可能保留标题中的样式吗?@MickM-恐怕我不知道你的意思。你的意思是你也想要HTML中的样式
元素?那很好,只需使用document.documentElement
而不是document.body
就可以在head
中获取内容。我的错,这正是我的意思:)它起作用了。谢谢T.J.嘿,谢谢你的回复。我刚刚测试了您的建议,似乎选择确实忽略了标有该类名的项;但是,选择[0]。outerHTML返回的是唯一的。我做错什么了吗?@MickM你能做一个片段演示吗?或者,我们可以看到您的实际代码。