Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/90.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将整个HTML文档作为字符串(不包括某些元素)获取?_Javascript_Html - Fatal编程技术网

Javascript 如何将整个HTML文档作为字符串(不包括某些元素)获取?

Javascript 如何将整个HTML文档作为字符串(不包括某些元素)获取?,javascript,html,Javascript,Html,我正在寻找一种获取整个HTML文档的方法,将一些项目(可能带有名为“exclude”的类名)作为字符串排除在外。 我知道我可以用document.documentElement.innerHTML 或document.documentElement.outerHTML 和document.getElementsByTagName('html')[0]。innerHTML 我仍在努力解决的问题是,在获取innerHTML之前,如何排除一些节点(例如按钮、div或任何其他具有公共类名的标记?我可能会

我正在寻找一种获取整个HTML文档的方法,将一些项目(可能带有名为“exclude”的类名)作为字符串排除在外。 我知道我可以用
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你能做一个片段演示吗?或者,我们可以看到您的实际代码。