博客列表 >DOM操作与事件

DOM操作与事件

赵大叔
赵大叔原创
2020年05月26日 13:02:45740浏览

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、事件捕获与冒泡的基本原理可以理解,还要实战才能检验出效果。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议