案例1:获取相关节点

  1. <div id="dv">
  2. <span>这是div中的第一个span标签</span>
  3. <p>这是div中的第二个元素,第一个p标签</p>
  4. <ul id="uu">
  5. <li>乔峰</li>
  6. <li>鹿茸</li>
  7. <li id="three">段誉</li>
  8. <li>卡卡西</li>
  9. <li>雏田</li>
  10. </ul>
  11. </div>
  12. //1---------------------------------------------------------------------------------
  13. <script>
  14. var dvObj=document.getElementById("dv");
  15. //获取里面的每个子节点
  16. for(var i=0;i<dvObj.childNodes.length;i++){
  17. var node=dvObj.childNodes[i];
  18. //nodeType--->节点的类型:1---标签,2---属性,3---文本
  19. //nodeName--->节点的名字:大写的标签--标签,小写的属性名---属性,#text---文本
  20. //nodeValue-->节点的值:标签---null,属性--属性的值,文本--文本内容
  21. console.log(node.nodeType+"====="+node.nodeName+"===="+node.nodeValue);
  22. }
  23. var dvObj=document.getElementById("dv");
  24. //获取的是属性的节点
  25. var node=dvObj.getAttributeNode("id");
  26. console.log(node.nodeType+"----"+node.nodeName+"===="+node.nodeValue);
  27. var dvObj=document.getElementById("dv");
  28. //子节点
  29. console.log(dvObj.childNodes);//7个子节点
  30. //子元素
  31. console.log(dvObj.children);
  32. </script>
  33. //2---------------------------------------------------------------------------------
  34. <script>
  35. var ulObj=my$("uu");
  36. console.log(ulObj.parentNode);//div
  37. console.log(ulObj.parentNode.parentNode);//body
  38. console.log(ulObj.parentNode.parentNode.parentNode);//html
  39. console.log(ulObj.parentNode.parentNode.parentNode.parentNode);//document
  40. console.log(ulObj.parentNode.parentNode.parentNode.parentNode.parentNode);//null
  41. //ul标签的父级节点
  42. console.log(ulObj.parentNode);
  43. //ul标签的父级元素,结果和父节点一样
  44. console.log(ulObj.parentElement);
  45. console.log(ulObj.parentNode.nodeType);//标签的---1
  46. console.log(ulObj.parentNode.nodeName);//标签---大写的标签名字
  47. console.log(ulObj.parentNode.nodeValue);//标签---null
  48. </script>
  49. //3---------------------------------------------------------------------------------
  50. <script>
  51. //获取节点和元素的
  52. //ul
  53. var ulObj=document.getElementById("uu");
  54. //父级节点
  55. console.log(ulObj.parentNode);
  56. //父级元素
  57. console.log(ulObj.parentElement);
  58. //子节点
  59. console.log(ulObj.childNodes);
  60. //子元素
  61. console.log(ulObj.children);
  62. //第一个子节点
  63. console.log(ulObj.firstChild);//------------------------IE8中是第一个子元素
  64. //第一个子元素
  65. console.log(ulObj.firstElementChild);//-----------------IE8中不支持
  66. //最后一个子节点
  67. console.log(ulObj.lastChild);//------------------------IE8中是第一个子元素
  68. //最后一个子元素
  69. console.log(ulObj.lastElementChild);//-----------------IE8中不支持
  70. //某个元素的前一个兄弟节点
  71. console.log(my$("three").previousSibling);//------------------------IE8中是前面一个子元素
  72. //某个元素的前一个兄弟元素
  73. console.log(my$("three").previousElementSibling);//-----------------IE8中不支持
  74. //某个元素的后一个兄弟节点
  75. console.log(my$("three").nextSibling);//------------------------IE8中是后面一个子元素
  76. //某个元素的后一个兄弟元素
  77. console.log(my$("three").nextElementSibling);//-----------------IE8中不支持
  78. </script>

//总结:凡是获取节点的代码在谷歌和火狐得到的都是 相关的节点
//凡是获取元素的代码在谷歌和火狐得到的都是 相关的元素
//从子节点和兄弟节点开始,凡是获取节点的代码在IE8中得到的是元素,获取元素的相关代码,在IE8中得到的是undefined——元素的代码,iE中不支持

案例2:点击按钮设置p标签背景色

  1. <input type="button" value="变色" id="btn" />
  2. <div id="dv">
  3. <span>这是span</span>
  4. <p>这是p</p>
  5. <span>这是span</span>
  6. <p>这是p</p>
  7. <span>这是span</span>
  8. <p>这是p</p>
  9. <span>这是span</span>
  10. <a href="http://www.baidu.com">百度</a>
  11. </div>
  12. <script>
  13. document.getElementById("btn").onclick = function () {
  14. //先获取div
  15. var dvObj = document.getElementById("dv");
  16. //获取里面所有的子节点
  17. var nodes = dvObj.childNodes;
  18. //循环遍历所有的子节点
  19. for (var i = 0; i < nodes.length; i++) {
  20. //判断这个子节点是不是p标签
  21. if (nodes[i].nodeType == 1 && nodes[i].nodeName == "P") {
  22. nodes[i].style.backgroundColor = "red";
  23. }
  24. }
  25. };
  26. //点击按钮,设置p变色---节点的方式做
  27. </script>

test.gif案例3:点击按钮隔行变色

  1. <input type="button" value="变色" id="btn" />
  2. <ul id="uu">
  3. <li>AA</li>
  4. <li>BB</li>
  5. <li>CC</li>
  6. <li>DD</li>
  7. <li>EE</li>
  8. <li>FF</li>
  9. <li>GG</li>
  10. <li>HH</li>
  11. </ul>
  12. <script>
  13. //隔行变色--li
  14. document.getElementById("btn").onclick = function () {
  15. var count = 0;//记录有多少个li
  16. //获取ul中所有的子节点
  17. var nodes = document.getElementById("uu").childNodes;
  18. //for循环里面不可以直接用i,因为nodes里面包含了文本节点,不光是li标签
  19. for (var i = 0; i < nodes.length; i++) {
  20. //判断这个节点是不是li标签
  21. if (nodes[i].nodeType == 1 && nodes[i].nodeName == "LI") {
  22. nodes[i].style.backgroundColor = count % 2 == 0 ? "red" : "yellow";
  23. count++;//8个
  24. }
  25. }
  26. };
  27. </script>

test.gif

案例4:切换背景图片

  1. <body id="bd">
  2. <div id="mask">
  3. <img src="images/1.jpg" alt="">
  4. <img src="images/2.jpg" alt="">
  5. <img src="images/3.jpg" alt="">
  6. </div>
  7. <script src="common.js"></script>
  8. <script>
  9. var imgObjs=my$("mask").children;//获取的所有的子元素
  10. //循环遍历所有img,注册点击事件
  11. for(var i=0;i<imgObjs.length;i++){
  12. console.log("xx");
  13. imgObjs[i].onclick=function () {
  14. document.body.style.backgroundImage="url("+this.src+")";
  15. };
  16. }
  17. </script>
  18. </body>
  19. <style>
  20. * {
  21. margin: 0px;
  22. padding: 0px;
  23. }
  24. body {
  25. background-image: url("images/1.jpg");
  26. }
  27. #mask {
  28. background-color: rgba(255, 255, 255, 0.3);
  29. height: 200px;
  30. text-align: center;
  31. }
  32. #mask img {
  33. width: 200px;
  34. margin-top: 35px;
  35. cursor: pointer;
  36. }
  37. </style>

test.gif