Blogger Information
Blog 119
fans 3
comment 1
visits 94681
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
DOM操作与事件
赵大叔
Original
741 people have browsed it

DOM操作

1、NodeList 和 HTMLCollection的区别

NodeList:文档节点集合
HTMLCollection: 文档元素集合
HTMLCollection相当于是NodeListtype=1的节点集合

html节点类型:

STT TYPE 描述
1 1 元素
2 2 属性
3 3 文本
4 6 注释
5 9 文档, document
6 11 文档片断

2、访问方式

STT 访问内容 访问所有节点集合 访问元素集合
1 获取第一个子节点 firstChild firstElementChild
2 最后一个子节点 lastChild lastElementChild
3 前一个兄弟节点 previousSibling previousElementSibling
4 后一个兄弟节点 nextSibling nextElementSibling

3、遍历演示

HTMLCollection没有forEach,用for遍历。

遍历所有节点集合:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>遍历所有节点集合</title>
  6. </head>
  7. <body>
  8. <ul>
  9. <li>item1</li>
  10. <li>item2</li>
  11. <li>item3</li>
  12. <li>item4</li>
  13. <li>item5</li>
  14. </ul>
  15. </body>
  16. <script>
  17. var ul = document.querySelector("ul");
  18. // 遍历
  19. var eles = [];
  20. ul.childNodes.forEach(function (item) {
  21. // 只返回类型为1的元素节点
  22. this.push(item);
  23. }, eles);
  24. console.log(eles);
  25. </script>
  26. </html>

演示效果图:

遍历元素节点集合:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>遍历元素节点集合:</title>
  6. </head>
  7. <body>
  8. <ul>
  9. <li>item1</li>
  10. <li>item2</li>
  11. <li>item3</li>
  12. <li>item4</li>
  13. <li>item5</li>
  14. </ul>
  15. </body>
  16. <script>
  17. var ul = document.querySelector("ul");
  18. for (var i = 0; i < ul.childElementCount; i++) {
  19. console.log(ul.children.item(i));
  20. }
  21. </script>
  22. </html>

演示效果图:

事件的添加方式

STT 添加方式
1 在 html 标签上添加属性
2 给 html 元素绑定事件属性
3 给 html 元素添加属性
4 监听器
5 事件派发
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>事件添加方式</title>
  6. </head>
  7. <body>
  8. <!--1、在 html 标签上添加属性-->
  9. <button onclick="alert('在 html 标签上添加属性');">按钮1</button>
  10. <button onclick="show(this)">按钮2</button>
  11. <button>按钮3</button>
  12. <button>按钮4</button>
  13. <button>按钮5</button>
  14. </body>
  15. <script>
  16. // 1. 给html元素绑定事件属性
  17. function show(ele) {
  18. var text = '给html元素绑定事件属性';
  19. alert(text);
  20. }
  21. // 2. 给html元素添加属性
  22. var btn3 = document.querySelector("button:nth-of-type(3)");
  23. btn3.onclick = function () {
  24. alert('给html元素添加属性');
  25. };
  26. // 3. 监听器
  27. var btn4 = document.querySelector("button:nth-of-type(4)");
  28. // btn4.addEventListener(事件类型, 事件回调函数, 传递机制)
  29. btn4.addEventListener(
  30. "click",
  31. function () {
  32. alert('监听器');
  33. },
  34. // false: 冒泡阶段触发
  35. false
  36. );
  37. // 4. 事件派发
  38. var btn5 = document.querySelector("button:last-of-type");
  39. btn5.addEventListener(
  40. "click",
  41. function () {
  42. alert('事件派发');
  43. },
  44. false
  45. );
  46. // 创建一个事件对象
  47. var ev = new Event("click");
  48. // 不用点击,也会自动的触发点击事件
  49. btn5.dispatchEvent(ev);
  50. </script>
  51. </html>

演示效果图:

事件捕获与冒泡的原理

事件捕获: 就是像捕鱼收网那样,从最处面向里面触发。
冒泡: 像水烧开了一样,从里面向外面扩散触发。

总结

1、DOM操作的获取dom元素 CSS选择器很好用。
2、节点集合、元素集合的访问方式、遍历方式,内容很抽象,还要多多练习。
3、事件捕获与冒泡的基本原理可以理解,还要实战才能检验出效果。

Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:事件123, 一个主体, 二个阶段, 三个过程, 自己品一品, 是不是这样?
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post