10_节点遍历.html 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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">1111111</div>
  11. <p id="p1">2222222222</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 li1 = document.getElementById('li1')
  21. var ul1 = document.getElementById('ul1')
  22. // console.log(div1)
  23. // console.log(div1.nodeType)
  24. // console.log(div1.nextSibling)
  25. // console.log(div1.previousSibling)
  26. //nextSibling 指向下一个兄弟节点
  27. //previousSibling 指向上一个兄弟节点
  28. /*
  29. 元素节点的 nodeName 与标签名相同
  30. 属性节点的 nodeName 与属性名相同
  31. 文本节点的 nodeName 始终是 #text
  32. 文档节点的 nodeName 始终是 #document
  33. */
  34. // console.log(div1.nodeName)
  35. // console.log(p1.nodeName)
  36. // console.log(li1)
  37. //nextElementSibling 下一个元素节点
  38. // console.log(li1.nextElementSibling)
  39. // console.log(li1.previousElementSibling)
  40. console.log(li1.nodeName)
  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. //elem.nodeName == 'LI'
  52. function first(elem){
  53. elem = elem.firstChild
  54. if(elem.nodeType != 1 ){
  55. elem = next(elem)
  56. }
  57. return elem
  58. }
  59. console.log(first(ul1))
  60. </script>
  61. </body>
  62. </html>