博主信息
博文 119
粉丝 3
评论 1
访问量 121274
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
DOM操作与事件
赵大叔
原创
957人浏览过

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

批改老师:天蓬老师天蓬老师

批改状态:合格

老师批语:事件123, 一个主体, 二个阶段, 三个过程, 自己品一品, 是不是这样?
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学