Javascript 获取DOM深层中的注释节点

Javascript 获取DOM深层中的注释节点,javascript,jquery,dom-manipulation,Javascript,Jquery,Dom Manipulation,如何获取包含DOM中所有注释元素的数组或类似数组(JQuery对象)? contents()仅检索1级元素 ...html code... <!--remove from here--> ...code... <!--finish removing--> ...html code... 更广泛的问题是:我需要删除DOM中两个文本注释之间的所有元素。注释也可以位于子元素中 ...html code... <!--remove from here--> ...c

如何获取包含DOM中所有注释元素的数组或类似数组(JQuery对象)?
contents()
仅检索1级元素

...html code...
<!--remove from here-->
...code...
<!--finish removing-->
...html code...
更广泛的问题是:我需要删除DOM中两个文本注释之间的所有元素。注释也可以位于子元素中

...html code...
<!--remove from here-->
...code...
<!--finish removing-->
...html code...
谢谢。

您可以将
whatToShow
设置为
NodeFilter.SHOW\u ALL
以查看文档上的所有节点

var treeWalker=document.createTreeWalker(
文件正文,
NodeFilter.SHOW_ALL,
无效的
假的
);
var commentList=[];
while(treeWalker.nextNode()){
//只保留评论
if(treeWalker.currentNode.nodeType==8)
commentList.push(treeWalker.currentNode);
}
var节点;
while(节点!==commentList[1]){
node=commentList[0]。下一步绑定;
node.parentElement.removeChild(节点);
}

你好,世界

留着我删除部分仅适用于给定的结构:如果只有两条注释,则删除两条注释之间的所有内容。您可能需要检查这些是否是好的。我承认我还没有听说过:)我看到它非常支持跨浏览器,所以很好。它是否比使用正则表达式从innerHtml中删除文本更有效?谢谢!这样效率更高是的!看见另外,TreeWalker非常强大,一定要试一试。顺便说一句,对我来说,更好的做法是使用过滤器:“SHOW_COMMENT”并删除目标注释的下一个隐藏,直到下一个目标注释为空。