如何递归打印DOM内容
How can I print DOM Content recursively?
我正在尝试递归打印DOM内容。
(function print (node) {
for (var i = 0, elem; i < (elem = node.childNodes[i]); i++) {
print(elem);
}
})(document.documentElement);
当我在浏览器控制台中启动代码时,我会得到
undefined
我做错了什么?
试试这个:(它在chrome中工作,我不确定每个浏览器是否都有相同的文档结构)
(function print (node) {
console.log(node)
var childNodes = node.childNodes;
for (var i = 0; i < childNodes.length; i++) {
print(childNodes[i]);
}
})(document);
编辑:警告,控制台打印速度较慢,请注意:p
更新:删除了"elem",因为它没有被使用,我只是忘记删除它
function traverseDOM(node){
var result = node.tagName;
if (node.hasChildNodes()) {
var child = node.firstChild;
while (child) {
if (child.nodeType === 1) {
result += traverseDOM(child)
}
child = child.nextSibling;
}
}
return result;
}
console.log(traverseDOM());
取决于它是激光打印机还是点阵打印机。
我建议使用TreeWalker API,它以此为生。
var node;
var walker = document.TreeWalker(document,
NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT);
while (node = walker.nextNode) { console.log(node); }
这也将避免任何递归/堆栈溢出问题,尽管事实上,即使在非常深的DOM的情况下,这也可能不是问题。
function print(document){
var data=document.documentElement;
for(var i=0;i<data.childNodes.length;i++)
{
print(data.childNodes[i]);
}
}
console.log(documentdocumentElement)
相关文章:
- 使用javascript将动态表从一个html页面打印到另一个html页
- JavaScript打印功能使日历停止工作
- 在单击任何位置时隐藏元素,而不检查每次DOM单击
- 是否有任何snippet或jQuery插件可以列出easylist.txt模式匹配的DOM中的所有元素
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 如何在DOM元素上按类型构建此函数
- esri javascript异步打印
- Windows形成web浏览器控件和Javascript更改的DOM
- php:打印javascript/jquery dom就绪
- jsPDF/jsPDF可自动将dom元素打印到表中
- 递归单步执行 HTML DOM 并打印属性
- Java 脚本:递归地遍历关联的 HTML 文件的 Dom,并打印遇到的元素类型
- 如何使用护照循环用户.js并将用户列表打印到 DOM 上
- 打印在 Javascript 中触发 eventListener 的 DOM 元素的完整 HTML
- 使用CasperJs,了解如何在DOM环境中打印日志
- 从html dom创建可打印的PDF
- 如何递归打印DOM内容
- 仅对打印进行DOM操作
- 不要在打印时使用jQuery更改DOM
- 如何将Javascript数据打印到HTML DOM中?