博主信息
博文 36
粉丝 1
评论 0
访问量 37750
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
JS事件添加与事件委托
Jason
原创
1152人浏览过

作业

NodeList与HTMLCollection区别

主要有两个方面不一样

1.包含节点的类型
2.使用方法

1.包含节点的类型不同

  1. (1)NodeList
  2. 一个节点的集合,既可以包含元素和其他节点(注释节点,文本节点等)。
  3. (2)HTMLCollection
  4. 元素集合,只有Element

2.使用方法不同

遍历方式不一样,Nodelist可以用forEach遍历数据
示例

  1. <body>
  2. <ul>
  3. <li>item1</li>
  4. <li>item2</li>
  5. <li>item3</li>
  6. <li>item4</li>
  7. <li>item5</li>
  8. </ul>
  9. </body>
  10. <script>
  11. var cl = console.log.bind(console);
  12. var ul = document.querySelector("ul");
  13. var eles = [];
  14. ul.childNodes.forEach(function (item) {
  15. // 只返回类型为1的元素节点
  16. if (item.nodeType === 1) this.push(item);
  17. }, eles);
  18. cl(eles);

HTMLcollection没有forEach,只能用for循环遍历

  1. <body>
  2. <ul>
  3. <li>item1</li>
  4. <li>item2</li>
  5. <li>item3</li>
  6. <li>item4</li>
  7. <li>item5</li>
  8. </ul>
  9. </body>
  10. <script>
  11. var cl = console.log.bind(console);
  12. var ul = document.querySelector("ul");
  13. for(var i = 0; i < ul.childElementCount; i++) {
  14. cl(ul.children.item(i));
  15. }
  16. </script>

事件的添加方式

注:onclick为点击事件

事件的添加方式有四种:

行内样式

  1. <body>
  2. <button onclick="var text=this.innerText; alert(text);">按钮1</button>
  3. <body>

给HTML元素绑定事件属性

  1. <body>
  2. <button onclick="show(this)">按钮2</button>
  3. </body>
  4. <script>
  5. function show(ele) {
  6. var text = ele.innerText;
  7. alert(text);
  8. }
  9. </script>

通过监听器添加事件

  1. <body>
  2. <button onclick="show(this)">按钮2</button>
  3. </body>
  4. <script>
  5. var btn4 = document.querySelector("button:nth-of-type(4)");
  6. btn4.addEventListener(
  7. "click",
  8. function () {
  9. alert(this.innerText);
  10. },
  11. false
  12. );
  13. <script>

事件委托与代理

原理:子元素上的事件会冒泡到父元素上的同名事件上触发,比如click,注意是同名事件。

示例:

  1. <ul>
  2. <li>item1</li>
  3. <li>item2</li>
  4. <li>item3</li>
  5. <li>item4</li>
  6. <li>item5</li>
  7. </ul>
  8. <script>
  9. // 事件委托/代理: 子元素上的事件会冒泡到父元素上的同名事件上触发,只要写父元素的事件就行了
  10. document.querySelector("ul").addEventListener("click", function (ev) {
  11. cl(ev.target);
  12. cl(ev.currentTarget);
  13. cl(this === ev.currentTarget);
  14. cl("当前触发事件的元素是:", ev.target);
  15. // });
  16. </script>

总结

NodeListHTMLCollection的访问与遍历有所区别,他们可以说是一个包含关系。运用场景不一样。事件的委托与代理,应用场景十分的广阔,它可以减少重复DOM的交互次数,这样我们就需要一个内存空间就够了。提高网页性能。

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

批改状态:合格

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

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

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