10_节点遍历.html 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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">11111111111</div>
  11. <p id="p1">222222222</p>
  12. <ul id="ul1">
  13. <li>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. documentt 是没有nodevalue 是null
  27. 元素节点也没有nodevalue
  28. 属性节点id的nodevalue是
  29. 内容节点的nodevalue就是内容
  30. */
  31. console.log(div1.nodeValue)
  32. console.log(div1.nextElementSibling)//下一个元素节点
  33. console.log(div1.previousElementSibling)//上一个元素节点
  34. console.log(div1.nodeName)//div
  35. console.log(p1.nodeName) //P
  36. /*
  37. 元素节点 nodeName 与标签名相同
  38. 属性节点 nodeName 与属性名相同
  39. 文本节点 nodeName #text
  40. 文档节点 nodeName #document
  41. */
  42. function next(elem){
  43. do{
  44. elem = elem.nextSibling
  45. } while(elem.nodeType != 1)
  46. return elem
  47. }
  48. console.log(next(p1))
  49. console.log(div1.firstChild)
  50. console.log(ul1.lastChild)
  51. console.log(ul1.firstElementChild)
  52. console.log(ul1.lastElementChild)
  53. function first(elem){
  54. elem = elem.firstChild
  55. if(elem.nodeType != 1){
  56. elem = next(elem)
  57. }
  58. return elem
  59. }
  60. console.log(first(ul1))
  61. </script>
  62. </body>
  63. </html>