JavaScript递归遍历HTML节点详解

作者:页面旅途时间:2026-10-27 19:35:37浏览:113

本文介绍如何使用JavaScript递归方法遍历HTML页面节点。通过判断nodeType值区分元素、属性、注释等节点类型,统计Element节点数量并记录标签名。示例代码展示了递归函数countTotalElement的实现逻辑及在DOM中的实际应用。

JavaScript递归遍历HTML节点详解

许久未使用递归调用,回顾此例令人豁然开朗。

具体实现代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>统计Element节点</title>
<script language="javascript">
var elementName="";
function countTotalElement(node)
   {
///Attribute nodeType值为2,表示节点属性
///Comment nodeType值为8,表示注释文本
///Document nodeType值为9,表示Document
///DocumentFragment nodeType值为11,表示Document片段
///Element nodeType值为1,表示元素节点
///Text nodeType值为3,表示文本节点
var total=0;
if(node.nodeType==1) //1代表节点的类型为Element
    {
total++;
elementName=elementName+node.tagName+"\r\n";
    }
var childrens=node.childNodes;
for(var i=0;i<childrens.length;i++)
    {
total+=countTotalElement(childrens[i]);
    } 
return total;
   }
</script>
</head>
<body>
 <h1>测试</h1>
 <table width="100" border="2" cellpadding="0" cellspacing="0">
 <tr><td>
 <form name="form1" action="" method="post">
 <input type="text" name="ipput1" value="测试"><br />
 <input type="password" name="password" value="">
 </form>
 </td></tr>
 </table>
 <a href="javascript:void(0)" onClick="alert('标记总数'+countTotalElement(document)+'\r\n 全部标记如下:\r\n'+elementName);">开始测试</a>
</body>
</html>

通过递归调用可实现类似百度蜘蛛爬虫的效果,该方法值得尝试,或许可用于编写sitemap生成器。

作者最新文章