JS 节点属性和Element属性

短命女 2023-10-05 08:23 54阅读 0赞

节点属性




























parentNode

返回节点的父节点

childNodes

返回子节点集合,childNodes[i]

firstChild

返回节点的第一个子节点,最普遍的用法是访问该元素的文本节点

lastChild

返回节点的最后一个子节点

nextSibling

下一个节点

previousSibling

上一个节点

Element**属性**




















    firstElementChild

返回节点的第一个子节点

lastElementChild

返回节点的最后一个子节点

nextElementSibling

下一个节点

previousElementSibling

上一个节点

案例:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title></title>
  6. </head>
  7. <body>
  8. <h1>hello</h1>
  9. <ul id="ul">
  10. <li id="a1">电风扇<a href="javascript:void(0)">隐藏</a></li>
  11. <li>蓝宝<a href="javascript:void(0)">隐藏</a></li>
  12. <li>刘芳<a href="javascript:void(0)">隐藏</a></li>
  13. <li>杨树<a href="javascript:void(0)">隐藏</a></li>
  14. <li id="a5">张飞<a href="javascript:void(0)">隐藏</a></li>
  15. </ul>
  16. <p>mike</p>
  17. </body>
  18. </html>
  19. <script type="text/javascript">
  20. window.onload = function () {
  21. // fun1()
  22. // fun2();
  23. // fun3();
  24. // fun4();
  25. fun5();
  26. }
  27. //parentNode
  28. function fun1(){
  29. var ul = document.getElementById("ul");
  30. //取出所有的a标签
  31. var aA = ul.getElementsByTagName("a");
  32. for (var i = 0; i < aA.length; i++) {
  33. //给每个a标签注册事件
  34. aA[i].onclick = function () {
  35. //this是当前元素,parentNode 是单数,
  36. //因为每个节点,只有一个父节点!有多个子节点
  37. this.parentNode.style.display = "none";
  38. }
  39. }
  40. }
  41. //childNodes既包括元素节点,又包括文本节点
  42. function fun2(){
  43. var ul = document.getElementById("ul");
  44. for (var i = 0; i < ul.childNodes.length; i++) {
  45. //nodeType=1,元素节点
  46. //nodeType=3,文本节点(#text 空文本)
  47. console.log(ul.childNodes[i].nodeName);
  48. if(ul.childNodes[i].nodeType==1){
  49. ul.childNodes[i].style.color="orchid";
  50. }
  51. }
  52. }
  53. function fun3(){
  54. var ul = document.getElementById("ul");
  55. //children 只包括元素节点,不包括文本节点
  56. for (var i = 0; i < ul.children.length; i++) {
  57. console.log(ul.children[i].nodeName);
  58. ul.children[i].style.color="red";
  59. }
  60. }
  61. //注意:firstChild和lastChild只能对单个节点就行操作,不能对节点数组进行操作;
  62. //firstChild和lastChild弹出的是undefined?
  63. function fun4(){
  64. var ul=document.getElementById("ul");
  65. console.log(ul.firstChild.nextSibling.innerHTML);
  66. console.log(ul.lastChild.previousSibling.innerHTML);
  67. }
  68. // 问题主要是出自<ul id="a1">之后和</ul>之前的“回车”和“空格”字符,复现里面打印出的#text就是这些“回车”和“空格”字符,也称文本节点,它们才是真正意义上的firstChild和lastChild,而不是我们想要获取的li,所以debug中将这些空白字符去掉即可。
  69. //访问节点兼容问题
  70. //Element属性:
  71. function fun5(){
  72. var ul=document.getElementById("ul");
  73. // console.log(ul.firstElementChild.innerHTML); //first
  74. // console.log(ul.lastElementChild.innerHTML); //last
  75. console.log(ul.nextElementSibling.innerHTML); //next ==>mike
  76. console.log(ul.previousElementSibling.innerHTML); //previous ==>hello
  77. }
  78. </script>

20200814110131747.png

发表评论

表情:
评论列表 (有 0 条评论,54人围观)

还没有评论,来说两句吧...

相关阅读