博客列表 >JavaScript的DOM事件流和字符串API

JavaScript的DOM事件流和字符串API

Pharaoh
Pharaoh原创
2022年07月29日 01:18:11323浏览

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());

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