DOM小结

一、定义

dom - - -  Document Object Model (文档对象声明)

HTML DOM 定义了所有 HTML 元素的对象属性,以及访问它们的方法。换句话说咱们可以利用dom对HTML元素进行获取,修改,添加,删除等操作。

二.知识点小结
1.childNodes (该属性能返回当前节点的子节点列表)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>dom1</title> <style> li{ height: 30px; border: 1px solid #000; } </style> </head> <body> <ul id="uls"> <li></li> <li></li> </ul> </body> <script> var uls = document.getElementsByTagName("ul")[0]; alert(uls.childNodes.length) </script> </html>

Dom小结 - 淡淡De影痕 - 淡淡De影痕的博客
 这个是在Chrome中运行的结果,能看到ul中包涵5个子节点(3个文本节点,2个元素节点)。
2.nodeType (该属性返回节点类型)

Dom小结 - 淡淡De影痕 - 淡淡De影痕的博客

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>dom1</title> <style> li{ height: 30px; border: 1px solid #000; } </style> </head> <body> <ul id="uls"> <li></li> <li></li> </ul> </body> <script> var uls = document.getElementsByTagName("ul")[0]; for(var i = 0; i <= uls.childNodes.length; i++){ console.log(uls.childNodes[i].nodeType) } // nodeType -->3文本节点 // nodeType -->1元素节点 </script> </html>

咱们来看看ul下有哪些节点。
Dom小结 - 淡淡De影痕 - 淡淡De影痕的博客

3.children (该属性返回当前节点中的子元素----不包含文本节点)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>dom1</title> <style> li{ height: 30px; border: 1px solid #000; } </style> </head> <body> <ul id="uls"> <li></li> <li></li> </ul> </body> <script> var uls = document.getElementsByTagName("ul")[0]; for(var i = 0 ; i <= uls.children.length ; i++){ uls.children[i].style.background = "red"; } </script> </html>

4.parentNode(返回指定节点的父节点)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>dom1</title> <style> li{ height: 30px; border: 1px solid #000; } </style> </head> <body> <ul id="uls"> <li></li> <li></li> </ul> </body> <script> var uls = document.getElementsByTagName("ul")[0]; alert(uls.parentNode) </script> </html>

Dom小结 - 淡淡De影痕 - 淡淡De影痕的博客
 
 5.offsetParent (返回指定元素进行定位的父元素)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>dom3</title> <style> *{ padding: 0; margin: 0; } #main{ position: relative; width: 200px; height: 200px; background: red; } #box{ position: absolute; top: 100px; left: 100px; width: 50px; height: 50px; background: #000; } </style> </head> <body> <div id="main"> <div id="box"> </div> </div> </body> <script> // offsetParent属性会根据不同的定位显示不同的父级元素(与元素的绝对定位和相对定位有关) var box = document.getElementById("box") alert(box.offsetParent) </script> </html>

Dom小结 - 淡淡De影痕 - 淡淡De影痕的博客
 当我们为box的父元素main设置position:relative后,能看到弹出的是div(main)。咱们去掉main的相对定位再看看结果。
Dom小结 - 淡淡De影痕 - 淡淡De影痕的博客
去掉main的position后,box相对于body进行定位所以弹出的是Body。
6.firstChild (返回被选节点的第一个子节点)
兼容问题:
ie6~8  :                    firstChild
其他高大上浏览器:firstElementChild
兼容性写法:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>dom4</title> </head> <body> <ul id="uls"> <li></li> <li></li> <li></li> </ul> </body> <script> var uls = document.getElementById("uls"); if(uls.firstElementChild){ uls.firstElementChild.style.background = "red"; }else{ uls.firstChild.style.background = "red"; } </script> </html>

7.lastChild(返回被选节点的最后一个子节点)
兼容问题:
    ie6~8:    lastChild
       其他高大上浏览器:lastElementChild
lastChild用法同上,这里就不过多赘述了。
8.nextSibling(返回被选节点的下一个同级节点)
兼容问题:
       ie6~8:    nextSibling
       其他高大上浏览器:nextElementSibling
用法同上。
9.previousSibling(返回被选节点的上一个同级节点)
兼容问题:
       ie6~8:    previousSibling
       其他高大上浏览器:previousElementSibling
用法同上。
10.setAttribute(创建或改变某个新属性)
      setAttribute(名称,值)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>dom5</title> </head> <body> <input type="text" id="btn1" /> <input type="button" value="按钮" id="btn2" /> </body> <script> var btn1 = document.getElementById("btn1"); var btn2 = document.getElementById("btn2"); btn2.onclick = function(){ btn1.setAttribute("value","1234"); } // 获取:getAttribute(名称) // 设置:setAttribute(名称,值) // 删除:removeAttribute(名称) </script> </html>

11.getAttribute(通过名称获取属性的值)
getAttribute(名称)
用法同上。
12.removeAttribute(通过名称删除属性值)
 removeAttribute(名称)
用法同上。
13.createElement(创建元素节点)
    createElement(元素名称)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <ul id="uls"> </ul> <input type="button" value="创建li" /> </body> <script> var uls = document.getElementsByTagName("ul")[0]; var btns = document.getElementsByTagName("input")[0]; btns.onclick = function(){ var lis = document.createElement("li"); uls.appendChild(lis); // 父级.appendChild(创建的元素); } </script> </html>

14.appendChild(指定元素节点的最后一个子节点之后添加节点)
     父级.appendChild(插入的节点)
使用方法见上例。
15.insertBefore在已有的子节点前插入一个新的子节点
    父级.insertBefore(新的子节点 , 在谁之前)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <input type="text" /> <input type="button" value="插入元素" /> <ul> </ul> </body> <script> var txt = document.getElementsByTagName("input")[0]; var btn = document.getElementsByTagName("input")[1]; var uls = document.getElementsByTagName("ul")[0]; btn.onclick = function(){ var lic = document.createElement("li"); var lis = document.getElementsByTagName("li"); lic.innerHTML = txt.value; uls.insertBefore(lic,lis[0]); } </script> </html>

16.removeChild(删除父节点中的子元素)
     父级.removeChild(子节点)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>dom9</title> <style> span{ color: red; } </style> </head> <body> <ul id="uls"> <li>jdjdjdjd<span>删除</span></li> <li>jdsdcsd<span>删除</span></li> <li>jdcsdsddjd<span>删除</span></li> <li>12123<span>删除</span></li> <li>343434jdjd<span>删除</span></li> </ul> </body> <script> var uls = document.getElementById("uls"); var spans = document.getElementsByTagName("span"); for(var i = 0; i<= spans.length; i++){ spans[i].onclick = function(){ uls.removeChild(this.parentNode); } } // removeChild 删除父元素中的子节点。 </script> </html>

17.表格中的一些便捷操作
 tBodies  --> getElementsByTagName("tbody")
 rows       --> getElementsByTagName("tr")
 cells      --> getElementsByTagName("td")
 tHead     --> 获取表头(tHead不是数组)
 tFoot     --> 获取页脚(tFoot不是数组)

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>表格操作</title> </head> <body> <table id="tab1" border="1px" width="400px"> <thead> <tr> <td>ID</td> <td>姓名</td> <td>年龄</td> </tr> </thead> <tbody> <tr> <td>1</td> <td>张三</td> <td>21</td> </tr> <tr> <td>2</td> <td>王五</td> <td>22</td> </tr> <tr> <td>3</td> <td>李四</td> <td>22</td> </tr> </tbody> </table> </body> <script> var tab1 = document.getElementById("tab1"); // 用平常的获取标签的方法找到“王五”。 // 表格便捷操作 // tBodies --> getElementsByTagName("tbody") // rows --> getElementsByTagName("tr") // cells --> getElementsByTagName("td") // tHead --> 获取表头(tHead不是数组) // tFoot --> 获取页脚(tFoot不是数组) alert(tab1.tBodies[0].rows[1].cells[1].innerHTML) </script> </html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值