博主信息
博文 37
粉丝 1
评论 0
访问量 41454
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
JS的事件代理机制及常用字符串函数操作
Jason Pu?
原创
907人浏览过

一. js事件代理的原理

明白js的事件代理原理,首先要明白一个概念:冒泡,我们通过事件监听器:addEventlistener()监听事件时我们可以设置事件模型:事件冒泡、事件捕获。
冒泡就是事件的触发响应会从最底层目标一层层地向外到最外层,事件代理即是利用事件冒泡的机制把里层所需要响应的事件绑定到外层,然后通过ev.target来获取事件触发者,来匹配判断目标元素,以达到节省资源的目的。
试想,一个列表如果有十几个li,如果给每个li元素绑定同一个事件,那必将造成极大的内存消耗,下面我们举个例子来说明:

案例说明:通过给父元素ul绑定事件,点击一个li,弹出相应li的innerHTML值

首先创建一个列表:

  1. <ul id="ul">
  2. <ol>item1</ol>
  3. <ol>item2</ol>
  4. <ol>item3</ol>
  5. <ol>item4</ol>
  6. <ol>item5</ol>
  7. <ol>item6</ol>
  8. </ul>

js实现:

  1. let ul = document.querySelector("#ul");
  2. ul.addEventListener("click",ev => alert(ev.target.innerHTML));

验证效果如下:

二:用事件监听实现简单的留言和删除功能

1.先写一个input元素和一个空列表

  1. <label ><input type="text" name="message"></label>
  2. <ol id="list"></ol>

JS代码实现:

  1. //获取元素
  2. const msg = document.querySelector("input");
  3. const list = document.querySelector("#list");
  4. //添加留言
  5. msg.onkeydown = ev => {
  6. if(ev.key==="Enter"){
  7. //input当中的value不是空才可以留言:
  8. if (ev.currentTarget.value.length!=0){
  9. let content = `<li>${ev.currentTarget.value}&nbsp;&nbsp;<a style="color: red;font-size: 0.5em">点击删除<a/></li>`;
  10. list.insertAdjacentHTML("afterbegin",content);
  11. ev.currentTarget.value="";
  12. }else{//非空验证:
  13. alert("内容不能为空!");
  14. }
  15. }
  16. };
  17. // 删除留言:
  18. list.addEventListener("click",ev => {
  19. ev.currentTarget.removeChild(ev.target);
  20. });

实验效果如下:

点击中间的留言删除一下:

删除成功了!

三.常用字符串操作函数:

  1. //1:charAt()查找指定位置的字符 ;
  2. const str = "www.php.cn";
  3. console.log(str.charAt(0));//w
  4. //2:indexOf()返回某个指定的字符串值在字符串中首次出现的位置,没有会返回-1
  5. const str = "www.php.cn";
  6. console.log(str.indexOf('c'));//8
  7. // 3:replace("要替换的字符","用什么字符替换"),字符串替换
  8. const str = "www.php.cn";
  9. console.log(str.replace("cn","com"));//www.php.com
  10. // 4:toUpperCase()将所有的字符串都转换成大写字母
  11. const str = "www.php.cn";
  12. let uperStr = str.toUpperCase();
  13. console.log(uperStr);//WWW.PHP.CN
  14. //5:toLowerCase()将所有的字符串都转换为小写字母
  15. console.log(uperStr.toLowerCase());//www.php.cn
  16. // 6:把字符串首字母转成大写
  17. const name = "zhang";
  18. //找到第一个字符;
  19. let first = name.charAt(0);
  20. // 转成大写:
  21. let up = first.toUpperCase();
  22. // 字符串替换:
  23. console.log(name.replace(first,up));//Zhang
  24. //7:substring()截取指定下标范围的字符串
  25. console.log(str.substring(4,7));//php
  26. //8:substr()截取从指定下标开始的指定个数的字符
  27. console.log(str.substr(4,3));//php
  28. //9:split();把一个字符串分割成字符串数组
  29. console.log(str.split(".",3));//[ "www", "php", "cn" ]
  30. //10:match(regexp) 返回匹配到的字符,以数组形式返回;找不到返回null
  31. const string = "a1b2c3fdf656";
  32. console.log(string.match(/[0-9]/g));//[ "1", "2", "3", "6", "5", "6" ]
批改老师:天蓬老师天蓬老师

批改状态:合格

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