JS获取元素节点和子节点的三种方法(dom查询)

深藏阁楼爱情的钟 2023-01-20 15:58 421阅读 0赞

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  5. <title>Untitled Document</title>
  6. <link rel="stylesheet" type="text/css" href="style/css.css" />
  7. <script type="text/javascript">
  8. /* * 定义一个函数,专门用来为指定元素绑定单击响应函数 * 参数: * idStr 要绑定单击响应函数的对象的id属性值 * fun 事件的回调函数,当单击元素时,该函数将会被触发 */
  9. function myClick(idStr , fun){
  10. var btn = document.getElementById(idStr);
  11. btn.onclick = fun;
  12. }
  13. window.onload = function(){
  14. //为id为btn01的按钮绑定一个单击响应函数
  15. var btn01 = document.getElementById("btn01");
  16. btn01.onclick = function(){
  17. //查找#bj节点
  18. var bj = document.getElementById("bj");
  19. //打印bj
  20. //innerHTML 通过这个属性可以获取到元素内部的html代码
  21. alert(bj.innerHTML);
  22. };
  23. //为id为btn02的按钮绑定一个单击响应函数
  24. var btn02 = document.getElementById("btn02");
  25. btn02.onclick = function(){
  26. //查找所有li节点
  27. //getElementsByTagName()可以根据标签名来获取一组元素节点对象
  28. //这个方法会给我们返回一个类数组对象,所有查询到的元素都会封装到对象中
  29. //即使查询到的元素只有一个,也会封装到数组中返回
  30. var lis = document.getElementsByTagName("li");
  31. //打印lis
  32. //alert(lis.length);
  33. //变量lis
  34. for(var i=0 ; i<lis.length ; i++){
  35. alert(lis[i].innerHTML);
  36. }
  37. };
  38. //为id为btn03的按钮绑定一个单击响应函数
  39. var btn03 = document.getElementById("btn03");
  40. btn03.onclick = function(){
  41. //查找name=gender的所有节点
  42. var inputs = document.getElementsByName("gender");
  43. //alert(inputs.length);
  44. for(var i=0 ; i<inputs.length ; i++){
  45. /* * innerHTML用于获取元素内部的HTML代码的 * 对于自结束标签,这个属性没有意义 */
  46. //alert(inputs[i].innerHTML);
  47. /* * 如果需要读取元素节点属性, * 直接使用 元素.属性名 * 例子:元素.id 元素.name 元素.value * 注意:class属性不能采用这种方式, * 读取class属性时需要使用 元素.className */
  48. alert(inputs[i].className);
  49. }
  50. };
  51. //为id为btn04的按钮绑定一个单击响应函数
  52. var btn04 = document.getElementById("btn04");
  53. btn04.onclick = function(){
  54. //获取id为city的元素
  55. var city = document.getElementById("city");
  56. //查找#city下所有li节点
  57. var lis = city.getElementsByTagName("li");
  58. for(var i=0 ; i<lis.length ; i++){
  59. alert(lis[i].innerHTML);
  60. }
  61. };
  62. //为id为btn05的按钮绑定一个单击响应函数
  63. var btn05 = document.getElementById("btn05");
  64. btn05.onclick = function(){
  65. //获取id为city的节点
  66. var city = document.getElementById("city");
  67. //返回#city的所有子节点
  68. /* * childNodes属性会获取包括文本节点在呢的所有节点 * 根据DOM标签标签间空白也会当成文本节点 * 注意:在IE8及以下的浏览器中,不会将空白文本当成子节点, * 所以该属性在IE8中会返回4个子元素而其他浏览器是9个 */
  69. var cns = city.childNodes;
  70. //alert(cns.length);
  71. /*for(var i=0 ; i<cns.length ; i++){ alert(cns[i]); }*/
  72. /* * children属性可以获取当前元素的所有子元素 */
  73. var cns2 = city.children;
  74. alert(cns2.length);
  75. };
  76. //为id为btn06的按钮绑定一个单击响应函数
  77. var btn06 = document.getElementById("btn06");
  78. btn06.onclick = function(){
  79. //获取id为phone的元素
  80. var phone = document.getElementById("phone");
  81. //返回#phone的第一个子节点
  82. //phone.childNodes[0];
  83. //firstChild可以获取到当前元素的第一个子节点(包括空白文本节点)
  84. var fir = phone.firstChild;
  85. //firstElementChild获取当前元素的第一个子元素
  86. /* * firstElementChild不支持IE8及以下的浏览器, * 如果需要兼容他们尽量不要使用 */
  87. //fir = phone.firstElementChild;
  88. alert(fir);
  89. };
  90. //为id为btn07的按钮绑定一个单击响应函数
  91. myClick("btn07",function(){
  92. //获取id为bj的节点
  93. var bj = document.getElementById("bj");
  94. //返回#bj的父节点
  95. var pn = bj.parentNode;
  96. alert(pn.innerHTML);
  97. /* * innerText * - 该属性可以获取到元素内部的文本内容 * - 它和innerHTML类似,不同的是它会自动将html去除 */
  98. //alert(pn.innerText);
  99. });
  100. //为id为btn08的按钮绑定一个单击响应函数
  101. myClick("btn08",function(){
  102. //获取id为android的元素
  103. var and = document.getElementById("android");
  104. //返回#android的前一个兄弟节点(也可能获取到空白的文本)
  105. var ps = and.previousSibling;
  106. //previousElementSibling获取前一个兄弟元素,IE8及以下不支持
  107. //var pe = and.previousElementSibling;
  108. alert(ps);
  109. });
  110. //读取#username的value属性值
  111. myClick("btn09",function(){
  112. //获取id为username的元素
  113. var um = document.getElementById("username");
  114. //读取um的value属性值
  115. //文本框的value属性值,就是文本框中填写的内容
  116. alert(um.value);
  117. });
  118. //设置#username的value属性值
  119. myClick("btn10",function(){
  120. //获取id为username的元素
  121. var um = document.getElementById("username");
  122. um.value = "今天天气真不错~~~";
  123. });
  124. //返回#bj的文本值
  125. myClick("btn11",function(){
  126. //获取id为bj的元素
  127. var bj = document.getElementById("bj");
  128. //alert(bj.innerHTML);
  129. //alert(bj.innerText);
  130. //获取bj中的文本节点
  131. /*var fc = bj.firstChild; alert(fc.nodeValue);*/
  132. alert(bj.firstChild.nodeValue);
  133. });
  134. };
  135. </script>
  136. </head>
  137. <body>
  138. <div id="total">
  139. <div class="inner">
  140. <p>
  141. 你喜欢哪个城市?
  142. </p>
  143. <ul id="city">
  144. <li id="bj">北京</li>
  145. <li>上海</li>
  146. <li>东京</li>
  147. <li>首尔</li>
  148. </ul>
  149. <br>
  150. <br>
  151. <p>
  152. 你喜欢哪款单机游戏?
  153. </p>
  154. <ul id="game">
  155. <li id="rl">红警</li>
  156. <li>实况</li>
  157. <li>极品飞车</li>
  158. <li>魔兽</li>
  159. </ul>
  160. <br />
  161. <br />
  162. <p>
  163. 你手机的操作系统是?
  164. </p>
  165. <ul id="phone"><li>IOS</li> <li id="android">Android</li><li>Windows Phone</li></ul>
  166. </div>
  167. <div class="inner">
  168. gender:
  169. <input class="hello" type="radio" name="gender" value="male"/>
  170. Male
  171. <input class="hello" type="radio" name="gender" value="female"/>
  172. Female
  173. <br>
  174. <br>
  175. name:
  176. <input type="text" name="name" id="username" value="abcde"/>
  177. </div>
  178. </div>
  179. <div id="btnList">
  180. <div><button id="btn01">查找#bj节点</button></div>
  181. <div><button id="btn02">查找所有li节点</button></div>
  182. <div><button id="btn03">查找name=gender的所有节点</button></div>
  183. <div><button id="btn04">查找#city下所有li节点</button></div>
  184. <div><button id="btn05">返回#city的所有子节点</button></div>
  185. <div><button id="btn06">返回#phone的第一个子节点</button></div>
  186. <div><button id="btn07">返回#bj的父节点</button></div>
  187. <div><button id="btn08">返回#android的前一个兄弟节点</button></div>
  188. <div><button id="btn09">返回#username的value属性值</button></div>
  189. <div><button id="btn10">设置#username的value属性值</button></div>
  190. <div><button id="btn11">返回#bj的文本值</button></div>
  191. </div>
  192. </body>
  193. </html>

发表评论

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

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

相关阅读