10_节点遍历.html 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <div id="div1">111111111</div>
  11. <p id="p1">22222222</p>
  12. <ul id="ul1">
  13. <li id="li1">1</li>
  14. <li>2</li>
  15. <li>3</li>
  16. </ul>
  17. <script>
  18. var div1 = document.getElementById('div1')
  19. var p1 = document.getElementById('p1')
  20. var ul1 = document.getElementById('ul1')
  21. /* console.log(div1)
  22. console.log(div1.nodeType)//节点类型
  23. console.log(div1.nextSibling)// 下一个节点
  24. console.log(div1.previousSibling)//上一个节点 */
  25. /*
  26. document是没有nodeValue的:null
  27. 元素节点是没有nodeValue的:null
  28. 属性节点id的nodeValue:d1
  29. 内容节点的nodeValue:hello HTML DOM
  30. */
  31. // console.log(div1.nextElementSibling)//下一个元素节点
  32. // console.log(div1.previousElementSibling)//上一个元素节点
  33. // console.log(div1.nodeName)//节点名称
  34. // console.log(p1.nodeName)
  35. /*
  36. 元素节点的 nodeName 与标签名相同
  37. 属性节点的 nodeName 与属性名相同
  38. 文本节点的 nodeName #text
  39. 文档节点的 nodeName #document
  40. */
  41. function next(elem){
  42. do{
  43. elem = elem.nextSibling
  44. } while(elem.nodeType != 1)
  45. return elem
  46. }
  47. console.log(next(p1))
  48. // console.log(ul1.firstChild)
  49. // console.log(ul1.lastChild)
  50. // console.log(ul1.firstElementChild)
  51. function first(elem){
  52. elem = elem.firstChild
  53. if(elem.nodeType != 1){
  54. elem = next(elem)
  55. }
  56. return elem
  57. }
  58. console.log(first(ul1))
  59. </script>
  60. </body>
  61. </html>