博主信息
博文 29
粉丝 1
评论 0
访问量 22610
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
JavaScript的DOM事件流和字符串API
Pharaoh
原创
542人浏览过

DOM事件流

事件流是页面中节点接收事件的顺序,事件触发时会根据不同的阶段传播

  • 捕获阶段:由DOM顶层节点接收,逐级向下传播到具体的元素节点
    • 说人话就是从外到内
  • 冒泡阶段:具体的元素接收到事件后,逐级向上传播到DOM的顶层节点
    • 说人话就是从内到外

事件冒泡

例如子节点和父节点都有点击事件,那么点击子节点触发事件之后,也会触发父节点的点击事件,这就是事件冒泡,从内到外的影响。捕获阶段就相反,如果点击父节点,也会触发子节点的事件

阻止事件冒泡

  • event.stopPropagation(‘事件类型’ , 事件执行函数名, [true/false])

事件监听

  • <div onclick='函数()'>点我</div>div.onclick = '函数()' 这种老式的注册事件(绑定事件)具有唯一性,如果想触发多个函数会覆盖前面的函数
  • div.addEventListener('事件类型' , 函数() , [true/false]) 使用事件监听可以就不会覆盖,需要注意事件类型不用加on例如click,第三个参数可以不填,如果为true事件流为捕获阶段,默认不填是fasle也就是冒泡阶段
  • div.removeEventListener('事件类型' , 函数() , [true/false]) 删除事件监听

事件对象

注册时间时系统会自动创建事件对象event,跟事件相关的信息都会保存在这个对象,例如事件绑定在哪,事件的状态,鼠标点击的坐标等等,它里面有很多的属性和方法,事件对象可以是事件处理函数的形参,但我们不需要传进去参数

  • event.target 属性指向触发事件的元素
  • event.currenTarget 指向事件绑定的元素,和this类似,this也指向事件绑定的元素

事件代理

利用事件冒泡的特性,只需要给父节点注册事件,点击子节点元素就会触发事件,少写了代码,保护了头发

实例

  1. <div class="one">
  2. 点小黄也能出发我的事件
  3. <div class="two">点我会触发事件冒泡,用到父级事件监听</div>
  4. </div>
  5. <script>
  6. let div1 = document.querySelector(".one");
  7. // 老方法 具有唯一性,后面写的会覆盖前面的
  8. // div1.onclick = function () {
  9. // alert("hello");
  10. // };
  11. // 事件监听
  12. div1.addEventListener("click", touch);
  13. // 事件处理函数
  14. function touch() {
  15. alert("hello");
  16. // 事件触发源
  17. console.log("事件触发源");
  18. console.log(event.target);
  19. // 事件绑定源
  20. console.log("事件绑定源");
  21. console.log(event.currentTarget);
  22. // 阻止冒泡
  23. event.stopPropagation();
  24. // 删除事件监听
  25. div1.removeEventListener("click", touch);
  26. }
  27. </script>

字符串常用API

  • str.replace(‘str’,’newStr’) 字符串替换
  • str.substr(start,length) 截取字符串
  • str,slice(start,end) 截取字符串
  • str.concat(‘str’) 连接两个或多个字符串
  • str.charAt(sub) 返回指定索引的字符
  • str.indexOf(‘str’) 返回字符索引
  • str.search(‘str’) 返回字符索引
  • str.toString() 转为字符串
  • str.toLowerCase() 转为小写
  • str.toUpperCase() 转为大写
  1. let str = "字符串API";
  2. // charAt(索引) 返回指定索引的字符
  3. console.log(str.charAt(2), str[2]);
  4. // indexOf('str') 返回字符的索引
  5. console.log(str.indexOf("字"));
  6. // search('str') 返回字符的索引
  7. console.log(str.search("A"));
  8. // concat('str','str'...) 连接两个或多个字符串
  9. console.log(str.concat("", "asd"));
  10. // replace('str' , 'newStr') 替换选中的字符串
  11. console.log(str.replace("PI", "L"));
  12. // slice(起始索引,结束索引) ,从索引0开始,提取字符串中的2个字符
  13. console.log(str.slice(0, 3));
  14. // substr(起始索引,长度) 可以替代slice
  15. console.log(str.substr(0, 3));
  16. // toString() 转为字符串
  17. let x = 123;
  18. console.log(x.toString());
  19. // str.toLowerCase() 字母转为小写
  20. console.log(str.toLowerCase());
  21. // str.toUpperCase() 字母转为大写
  22. console.log(str.toUpperCase());

批改老师:PHPzPHPz

批改状态:合格

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