所谓DOM(HTML Document Object Model),即HTML 文档对象模型,其作用是定义了访问和处理 HTML 文档的标准方法。HTML DOM 把 HTML 文档中的标签、属性和文本当做节点,将它们呈现为带有元素、属性和文本的树结构(节点树)。
一、在DOM中,HTML 文档中的每个成分都是一个节点;
1. 整个文档是一个文档节点 ;
2. 每个 HTML 标签是一个元素节点 ;
3. 包含在 HTML 元素中的文本是文本节点 ;
4. 每一个 HTML 属性是一个属性节点 ;
5. 注释属于注释节点 ;
二、在DOM中,节点是有层次划分的,这些关系是相对的;
父节点:在上图中,<head>节点是<title>节点和<meta>节点的父节点;
子节点:在上图中,<h1>节点和<p>节点是<body>的子节点;
同级节点:在上图中,<h1>节点和<p>节点是同级节点,<title>节点和<meta>节点是同级节点;
祖先:在上图中,<html>节点和<body>节点都是<p>节点的祖先(祖辈);
后代:在上图中,<body>节点和<p>节点都是<html>节点的后代(后辈);
三、访问节点;
(1) document.getElementById(id)
通过对元素的ID访问,这是DOM一个基础的访问页面元素的方法.返回的是单个节点
(2) document.getElementsByName(name)
仅用于inputradio checkbox等元素,返回名字为name的元素数组返回的是节点列表
(3) document.getElementsByTagName(tagname)
返回具有tagname的元素列表数组.处理大的DOM结构会用到它返回的是节点列表
实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>轮播图</title> <style> div { width: 500px; height: 300px; margin: 50px auto; overflow: hidden; /* 超出高度部分隐藏 */ position: relative; } img { width: 500px; height: 300px; } p { width: 500px; height: 30px; position: absolute; z-index: 1000; bottom: 0; left: 0; color: #ffffff; text-align: center; line-height: 30px; } p span { display: inline-block; width: 20px; height: 20px; text-align: center; background: rgba(254, 254, 254, 0.6); border-radius: 50%; line-height: 20px; cursor: pointer; } </style> </head> <body> <div id="photo"> <a href=""><img src="static/images/1.jpg"></a> <a href=""><img src="static/images/2.jpg"></a> <a href=""><img src="static/images/3.jpg"></a> <a href=""><img src="static/images/4.jpg"></a> <a href=""><img src="static/images/5.jpg"></a> <p> <span onclick="change(0)">1</span> <span onclick="change(1)">2</span> <span onclick="change(2)">3</span> <span onclick="change(3)">4</span> <span onclick="change(4)">5</span> </p> </div> <script> function change(num){ var obj = document.getElementById('photo'); var obj_a = obj.getElementsByTagName('a'); for (var i = 0; i < obj_a.length; i++) { obj_a[i].style.display="none"; } obj_a[num].style.display="block"; } </script> </body> </html>
运行实例 »
点击 "运行实例" 按钮查看在线实例