博客列表 >演示事件代理的实现机制与留言板部分功能

演示事件代理的实现机制与留言板部分功能

lus菜
lus菜原创
2021年01月09日 13:26:27570浏览

事件代理:

样式代码:

  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. <script>
  10. //事件代理: 也叫"事件委托"
  11. const lis = document.querySelectorAll("li");
  12. document.querySelector("ul").addEventListener("click", ev => {
  13. //事件绑定者
  14. console.log(ev.currentTarget);
  15. //事件触发者,通常是"事件绑定者"的子元素
  16. console.log(ev.target.innerHTML);
  17. });
  18. </script>
  19. </body>

效果预览:

留言板:

样式代码:

  1. <body>
  2. <label>请留言:&nbsp;<input type="text" name="message" /></label>
  3. <ol id="list"></ol>
  4. <script>
  5. //获取元素
  6. const msg = document.querySelector("input");
  7. const list = document.querySelector("#list");
  8. msg.onblur = ev => {
  9. console.log(ev.currentTarget);
  10. };
  11. msg.onkeydown = ev => {
  12. // ev.key: 键盘事件中,key表示按下的键名
  13. if (ev.key === "Enter") {
  14. //非空判断
  15. if (ev.currentTarget.value.length === 0) {
  16. alert("内容不能为空");
  17. } else {
  18. //创建包括留言内容的html字符串
  19. let str = `<li>${ev.currentTarget.value}<button onclick="del(this)">删除</button></li>`;
  20. //最新留言应该始终做为第一条插入
  21. list.insertAdjacentHTML("afterbegin", str);
  22. //请空上一条留言
  23. ev.currentTarget.value = null;
  24. }
  25. }
  26. };
  27. //删除留言
  28. function del(ele) {
  29. return confirm("是否删除?") ? (ele.parentNode.outerHTML = null) : false;
  30. }
  31. </script>
  32. </body>

效果预览:

常用字符串方法:

  1. // 1. concat()拼装
  2. let str = "html".concat(" css ", "php !", 888);
  3. console.log(str);
  4. str = "html css php !";
  5. console.log(str);
  6. // 2. slice(start, end):取子串
  7. str = "hello php.cn";
  8. let res = str.slice(0, 5);
  9. console.log(res);
  10. //默认全部拿出来
  11. res = str.slice(0);
  12. console.log(res);
  13. res = str.slice(6);
  14. console.log(res);
  15. res = str.slice(-6);
  16. console.log(res);
  17. res = str.slice(-6, 9);
  18. console.log(res);
  19. // 正方向从0开始,反方向从-1开始
  20. res = str.slice(-6, -3);
  21. console.log(res);
  22. //3. substr(start, length)
  23. res = str.substr(0, 5);
  24. console.log(res);
  25. res = str.substr(-6, 3);
  26. console.log(res);
  27. // 4. trim():删除二端空格
  28. let psw = " root888 ";
  29. console.log(psw.length);
  30. psw = " root888 ";
  31. console.log(psw.trim().length);
  32. // 5. 将字符串打成数组
  33. res = str.split("");
  34. console.log(res);
  35. // 比如说从邮箱中解析出用户和和邮箱地址
  36. res = "admin@php.cn".split("@");
  37. console.log(res[0]);
  38. console.log(res[1]);
  39. </script>

效果预览:

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