博主信息
博文 52
粉丝 0
评论 3
访问量 54178
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
js-dom学习 第17章 DOM操作与事件机制
王小飞
原创
1547人浏览过

1、NodeList 和 HTMLCollection的区别

NodeList 文档所有节点的集合(包括空格 回车等),我们可通过节点列表中的索引号来访问列表中的节点(索引号由0开始)。

HTMLCollection: 表示 HTML 元素的集合(只返回有用的元素)。类似数组,但又不是数组。不会返回无用的文本节点如:空格 回车等等。
特征:1.键名、由0开始 2.有一个length属性,表示数量 3.始终返回一个集合,哪怕只有一个元素。

  1. // js 节点有11种类型,但是与html相关的只有6个
  2. // 1: 元素
  3. // 2: 属性
  4. // 3: 文本
  5. // 6: 注释
  6. // 9: 文档, document
  7. // 11: 文档片断

NodeList遍历:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>遍历元素节点</title>
  7. </head>
  8. <body>
  9. <ul>
  10. <li>item1</li>
  11. <li>item2</li>
  12. <li>item3</li>
  13. <li>item4</li>
  14. <li>item5</li>
  15. </ul>
  16. </body>
  17. <script>
  18. //先写一个数组 待放遍历结果
  19. var eles = [];
  20. ul.childNodes.forEach(function (item) {
  21. // 只返回类型为1的元素节点 this.push然后添加到eles数组里面
  22. if (item.nodeType === 1) this.push(item);
  23. // 这里表示要添加的数组
  24. }, eles);
  25. cl(eles);
  26. </script>
  27. </html>

效果:

HTMLCollection元素方式遍历(由于文本节点干涉 所以这种方法更好用)

HTMLCollection没有forEach 使用for
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  6. <title>遍历元素节点</title>
  7. </head>
  8. <body>
  9. <ul>
  10. <li>item1</li>
  11. <li>item2</li>
  12. <li>item3</li>
  13. <li>item4</li>
  14. <li>item5</li>
  15. </ul>
  16. </body>
  17. <script>
  18. for (var i = 0; i < ul.childElementCount; i++) {
  19. cl(ul.children.item(i));
  20. }
  21. </script>
  22. </html>

效果:

classList对象方法:

  1. classList.add()增加值
  2. classList.remove()移除值
  3. classList.toggle()判断,有此值则移除,无则添加
  4. classList.replace()替换

事件

事件添加方式:

1.onclick 直接添加到按钮属性当中

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

2.给onclick的值传一个参数

<button onclick="show(this)">按钮2</button>

  1. <script>
  2. function show(ele) {
  3. var text = ele.innerText;
  4. alert(text);
  5. }
  6. </script>

3.给html元素添加属性

<button>按钮3</button>

  1. var btn3 = document.querySelector("button:nth-of-type(3)");
  2. btn3.onclick = function () {
  3. alert(this.nodeName);
  4. };

4.监听器方式

<button>按钮4</button>

  1. var btn4 = document.querySelector("button:nth-of-type(4)");
  2. // btn4.addEventListener(事件类型, 事件回调函数, 传递机制)
  3. btn4.addEventListener(
  4. "click",
  5. function () {
  6. alert(this.innerText);
  7. },
  8. // false: 冒泡阶段触发
  9. false
  10. );

5.事件派发(自动操作)

<button>按钮5</button>

  1. var btn5 = document.querySelector("button:last-of-type");
  2. btn5.addEventListener(
  3. "click",
  4. function () {
  5. alert(this.innerText);
  6. },
  7. false
  8. );
  9. // 创建一个事件对象
  10. var ev = new Event("click");
  11. // 不用点击,也会自动的触发点击事件
  12. btn5.dispatchEvent(ev);

总结常见的事件:

(1)输入文本时:

  1. onchange内容改变事件
  2. onfocus获得焦点事件
  3. onblur失去焦点事件
  4. onkeydown键盘按键按下事件
  5. onkeypress释放键盘按键事件

(2)鼠标事件

  1. onclick点击事件
  2. ondbclick表示鼠标快速点击了两次。
  3. mouseover表示鼠标经过。
  4. mouseout表示鼠标离开区域

冒泡原理:

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

批改状态:合格

老师批语:这个图片好大, 不错
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系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+教程免费学