一、基本概念
HTML DOM 定义了访问和操作HTML文档的标准方法。
HTML DOM 把 HTML 文档呈现为带有元素、属性和文本的树结构(节点树)。
DOM 被分为不同的部分:
1.Core DOM 定义了一套标准的针对任何结构化文档的对象
2.XML DOM 定义了一套标准的针对 XML 文档的对象
3.HTML DOM 定义了一套标准的针对 HTML 文档的对象。
节点:根据 DOM,HTML 文档中的每个成分都是一个节点。
DOM 是这样规定的:
>整个文档是一个文档节点
>每个 HTML 标签是一个元素节点
>包含在 HTML 元素中的文本是文本节点
>每一个 HTML 属性是一个属性节点
>注释属于注释节点
节点彼此间都存在关系。
>除文档节点之外的每个节点都有父节点。
>大部分元素节点都有子节点。
>当节点分享同一个父节点时,它们就是同辈(同级节点)。
>节点也可以拥有后代,后代指某个节点的所有子节点,或者这些子节点的子节点
>节点也可以拥有先辈。先辈是某个节点的父节点,或者父节点的父节点
查找并访问节点
你可通过若干种方法来查找您希望操作的元素:
>通过使用 getElementById() 和 getElementsByTagName() 方法
>通过使用一个元素节点的 parentNode、firstChild 以及 lastChild childNodes属性
> nextSibling返回节点之后紧跟的同级节点。/ previousSibling返回节点之前紧跟的同级节点。
节点信息
每个节点都拥有包含着关于节点某些信息的属性。这些属性是:
nodeName(节点名称)
nodeValue(节点值)
nodeType(节点类型)
nodeName 属性含有某个节点的名称。
元素节点的 nodeName 是标签名称
属性节点的 nodeName 是属性名称
文本节点的 nodeName 永远是 #text
文档节点的 nodeName 永远是 #document
二、HTML DOM对象参考
Document: 代表整个 HTML 文档,可被用来访问页面中的所有元素 常用集合属性:forms
Anchor : 代表 <a> 元素
Area : 代表图像映射中的 <area> 元素
Base : 代表 <base> 元素
Body : 代表 <body> 元素
Button : 代表 <button> 元素
Event : 代表某个事件的状态
Form : 代表 <form> 元素
Frame : 代表 <frame> 元素
Frameset: 代表 <frameset> 元素
Iframe : 代表 <iframe> 元素
Image : 代表 <img> 元素
Input button : 代表 HTML 表单中的一个按钮
Input checkbox : 代表 HTML 表单中的复选框
Input file : 代表 HTML 表单中的文件上传
Input hidden : 代表 HTML 表单中的隐藏域
Input password : 代表 HTML 表单中的密码域
Input radio : 代表 HTML 表单中的单选按钮
Input reset : 代表 HTML 表单中的重置按钮
Input submit : 代表 HTML 表单中的确认按钮
Input text : 代表 HTML 表单中的文本输入域(文本框)
Link : 代表 <link> 元素
Meta : 代表 <meta> 元素
Object : 代表 <Object> 元素
Option : 代表 <option> 元素
Select : 代表 HTML 表单中的选择列表
Style : 代表单独的样式声明
Table : 代表 <table> 元素
TableData : 代表 <td> 元素
TableRow : 代表 <tr> 元素
Textarea : 代表 <textarea> 元
实例:遍历绑定事件
1 <script type="text/javascript"> 2 //获取网页中所有的li节点 3 var list = document.getElementsByTagName("li"); 4 document.write("LI节点总数量:"+list.length+"<br/>"); 5 6 //获取ul中的所有li节点 7 var list2 = document.getElementsByTagName("ul")[0].getElementsByTagName("li"); 8 document.write("UL中LI节点数量:"+list2.length+"<br/>"); 9 10 //获取ol中的所有li子节点 11 var list3 = document.getElementById("oid").getElementsByTagName("li"); 12 document.write("OL中LI节点数量:"+list3.length+"<br/>"); 13 14 //为ul中的li节点绑定点击事件 15 for(var i=0;i<list2.length;i++){ 16 list2[i].onclick = function(){ 17 alert(this.innerHTML); 18 //获取当前li节点的父节点ul并设置样式 19 this.parentNode.style.color = this.innerHTML; 20 } 21 } 22 </script>
1 <body> 2 <h3 id="hid">JavaScript的HTML DOM实例--延迟加载</h3> 3 <img src="./images/HLL-11_xuandong.gif" res="./images/11.jpg"/> 4 <img src="./images/HLL-11_xuandong.gif" res="./images/22.jpg"/> 5 <img src="./images/HLL-11_xuandong.gif" res="./images/33.jpg"/> 6 <img src="./images/HLL-11_xuandong.gif" res="./images/44.jpg"/> 7 <script type="text/javascript"> 8 //定时调用 9 setTimeout(function(){ 10 //获取网页中所有的图片标签 11 var list = document.images; 12 //遍历处理 13 for(var i=0;i<list.length;i++){ 14 list[i].src = list[i].getAttribute("res"); 15 list[i].width = 100; 16 } 17 },3000); 18 19 alert("当前cookie信息:"+document.cookie); 20 </script> 21 </body>
实例:属性修改
<script type="text/javascript"> function dofun(){ var a = document.getElementById("aid"); //alert(a.nodeType); //获取信息 alert("地址:"+a.href+"; 名称:"+a.innerHTML+"; 提示信息:"+a.title); //改变 a.href="http://www.163.com"; a.title = "网易地址"; a.innerHTML = "网易"; } </script>
实例:绘制图片
1 <body> 2 <h3>JavaScript的HTML DOM实例--canvas节点</h3> 3 <canvas id="myCanvas"></canvas> 4 5 <script type="text/javascript"> 6 var canvas=document.getElementById('myCanvas'); 7 var ctx=canvas.getContext('2d'); 8 ctx.fillStyle='#FF0000'; 9 ctx.fillRect(0,0,80,100); 10 </script> 11 </body>
实例:事件冒泡
1 <body> 2 <h3>JavaScript的HTML DOM实例--事件的冒泡</h3> 3 <div id="maxid" style="300px;height:300px;background-color:#ddd;"> 4 <div id="minid" style="100px;height:100px;background-color:#f0c;"></div> 5 </div> 6 <script type="text/javascript"> 7 var maxid = document.getElementById("maxid"); 8 var minid = document.getElementById("minid"); 9 //绑定事件 10 maxid.onclick = function(){ 11 alert("大div层被点击!"); 12 } 13 14 15 minid.onclick = function(ent){ 16 var event = ent || window.event; 17 alert("小div层被点击!"); 18 19 //判断浏览器 20 if(document.all){ 21 //alert("IE"); 22 event.cancelBubble = true; //阻止事件冒泡 23 }else{ 24 //alert("非IE"); 25 event.stopPropagation(); //阻止事件冒泡 26 } 27 28 // event.cancelBubble = true; 29 } 30 </script> 31 </body>
1 <body> 2 <h3>JavaScript的HTML DOM实例--form表单</h3> 3 <form action="1.html" name="myform" method="get"> 4 信息:<input type="text" name="uname"/> 5 <input type="submit"/> 6 </form> 7 <br/> 8 <button onclick="document.myform.reset();">重置</button> 9 <button onclick="document.myform.submit();">表单外的提交</button> 10 <button onclick="doSubmit();">改变表单提交</button> 11 12 <script type="text/javascript"> 13 function doSubmit(){ 14 var form = document.myform; 15 form.action = "2.html"; 16 form.method = "post"; 17 form.uname.value="lisi"; 18 form.submit(); 19 } 20 </script> 21 </body>
1 <body> 2 <!-- 注释 --> 3 <h2>JavaScript实例:HTML DOM中的Select对象</h2> 4 <select id="sid1" size="10" multiple> 5 <option value="0">邓丽君</option> 6 <option value="1">张国荣</option> 7 <option value="2">梅艳芳</option> 8 <option value="3">黄家驹</option> 9 <option value="4">迈克尔.杰克逊</option> 10 <option value="5">姚贝娜</option> 11 <option value="6">张雨生</option> 12 </select> 13 <div> 14 <button onclick="doMove('sid1','sid2')">>></button> 15 <br/><br/><br/><br/> 16 <button onclick="doMove('sid2','sid1')"><<</button> 17 </div> 18 <select id="sid2" size="10" multiple></select> 19 <script type="text/javascript"> 20 //执行下拉项的移动操作 21 function doMove(d1,d2){ 22 //获取对应的下拉框 23 var select1 = document.getElementById(d1); 24 var select2 = document.getElementById(d2); 25 //获取第一个下拉框中的所有下拉项 26 var list = select1.options; 27 //遍历并判断 28 for(var i=0;i<list.length;i++){ 29 //判断是否选中 30 if(list[i].selected){ 31 list[i].selected = false; //取消选中 32 var ob = list[i]; 33 select1.remove(i); 34 select2.add(ob); 35 i--; 36 } 37 } 38 } 39 40 41 </script> 42 43 </body>
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"/> 5 <title>JavaScript实例</title> 6 <style> 7 select,option,div,button{margin:0px;padding:0px;} 8 #lid,#rid,div{ 9 80px; 10 height:260px; 11 float:left; 12 } 13 div{ 14 text-align:center; 15 padding-top:60px; 16 } 17 </style> 18 </head> 19 <body> 20 <!-- html注释 --> 21 <h2>JavaScript实例:HTML DOM 中table</h2> 22 <table id="tid" width="500" border="1"> 23 <thead> 24 <tr> 25 <th>学号</th> 26 <th>姓名</th> 27 <th>性别</th> 28 <th>年龄</th> 29 <th>操作</th> 30 </tr> 31 </thead> 32 <tbody> 33 <tr> 34 <td>1001</td> 35 <td>张三</td> 36 <td>男</td> 37 <td>20</td> 38 <td><button onclick="dodel(this)">删除</button></td> 39 </tr> 40 <tr> 41 <td>1002</td> 42 <td>李四</td> 43 <td>女</td> 44 <td>21</td> 45 <td><button onclick="dodel(this)">删除</button></td> 46 </tr> 47 <tr> 48 <td>1003</td> 49 <td>王五</td> 50 <td>男</td> 51 <td>22</td> 52 <td><button onclick="dodel(this)">删除</button></td> 53 </tr> 54 </tbody> 55 </table> 56 <br/><br/><br/> 57 <h2>添加学生信息</h2> 58 <form action="#" name="myform" onsubmit="return doAdd()"> 59 学号:<input type="text" name="sno"/><br/><br/> 60 姓名:<input type="text" name="name"/><br/><br/> 61 性别:<input type="text" name="sex"/><br/><br/> 62 年龄:<input type="text" name="age"/><br/><br/> 63 <input type="submit" value="添加"/> 64 </form> 65 <script type="text/javascript"> 66 //执行删除的方法 67 function dodel(bt){ 68 //获取表格节点 69 var tab = document.getElementById("tid"); 70 tab.deleteRow(bt.parentNode.parentNode.rowIndex); 71 } 72 73 //执行添加 74 function doAdd(){ 75 //获取表单信息 76 var sno = document.myform.sno.value; 77 var name = document.myform.name.value; 78 var sex = document.myform.sex.value; 79 var age = document.myform.age.value; 80 81 //获取表格并申请添加一行 82 var row = document.getElementById("tid").insertRow(); 83 //为当前行添加一个个字段 84 row.insertCell(0).innerHTML = sno; 85 row.insertCell(1).innerHTML = name; 86 row.insertCell(2).innerHTML = sex; 87 row.insertCell(3).innerHTML = age; 88 row.insertCell(4).innerHTML = '<button onclick="dodel(this)">删除</button>'; 89 90 //当前表单清空 91 document.myform.reset(); 92 93 return false; 94 } 95 </script> 96 </body> 97 </html>