一、常用的字符串方法

1.concat()方法:字符串拼接,在大量的生成 html 代码时用处很大,而且可以自动类型转换

  1. let str = " html ".concat(" css ", " js ", " ! ", 666);
  2. console.log(str);
  3. // str = "html css js ! 666";

2.slice(起始位置,结束位置)方法:取子串

  1. // 支持负数操作
  2. str = "hello world!";
  3. let str1 = str.slice(0, 5);
  4. console.log(str1);
  5. // str1 = "hello";
  6. // 省略第二个参数就是从当前起始位置一直到字符串结束
  7. // 从倒数第一个字符开始往前数,也就是-1开始
  8. str1 = str.slice(-6);
  9. console.log(str1);
  10. // str1 = world!

3.substr(起始位置,获取的长度)方法:取子串

  1. let str2 = str.substr(0, 7);
  2. console.log(str2);
  3. // str2 = "hello w";
  4. // 同样支持负数操作,取操作是从左至右
  5. str2 = str.substr(-6, 3);
  6. console.log(str2);
  7. // str2 = "wor";

4.trim()方法:删除两端空格

  1. let psd = " root123456 ";
  2. console.log(psd.length);
  3. // psd = " root123456 ";
  4. // psd.length = 16;
  5. // 去空格
  6. console.log(psd.trim().length);
  7. // psd = "root123456";
  8. // psd.length = 10;

5.split()方法:将字符串打包成数组

  1. let res = str.split("");
  2. console.log(res);
  3. //res = ["h", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d", "!"];
  4. // 用途:比如说从邮箱中解析出用户名和邮箱地址
  5. res = "admin@admin.com".split("@");
  6. console.log(res);
  7. // res = ["admin", "admin.com"];

6.charAt(n)方法:从字符串中获取单个字符,n 代表字符串中字符的索引值

  1. let cat = "cat";
  2. console.log(cat.charAt(1));
  3. // cat.charAt(1) = 'a';
  4. // 将字符串当成一个类数组使用
  5. console.log(cat[1]);
  6. // cat[1] = 'a';

7.toLowerCase()方法:将字符串全部转换成小写

  1. let str = "Hello world";
  2. let res = str.toLowerCase();
  3. console.log(res);
  4. // res = "hello world";

8.toUpperCase()方法:将字符串转换为大写

  1. let str = "hello world";
  2. let res = str.toUpperCase();
  3. console.log(res);
  4. // res = "HELLO WORLD";

9.includes()方法:判断一个字符串是否包含另一个字符串,返回结果是布尔值

  1. let str = "Hello World";
  2. console.log(str.include("hello"));
  3. // 返回值为false,因为include方法是区分大小写的

10.replace()方法:替换掉字符串中的一段

  1. let str = "HELLO World";
  2. let res = str.replace("HELLO", "Hello");
  3. console.log(res);
  4. // res = "Hello World";

二、事件代理机制,以及使用事件代理完成一个简单的留言板案例

事件代理,又称之为事件委托。是 JS 中常用绑定事件的技巧。“事件代理”是把原本需要绑定在子元素的响应事件(click、keydown……)委托给父元素,让父元素担当事件监听的职务。事件代理的原理是 DOM 元素的事件冒泡。

想要知道事件代理,首先需要知道的是事件传递。事件的传递行为分为两种,一种是捕获,另一种就是冒泡。捕获行为:从最外层元素,逐级向内捕获,直到事件的绑定者/触发者(从模糊到清晰的过程);冒泡行为:从目标由内向外逐级向上直到最外层元素(从清晰到模糊的过程),冒泡行为是事件传递过程中的默认行为。

冒泡行为的演示:

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  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 onclick="alert(this.tagName)">
  9. <div onclick="alert(this.tagName)">
  10. <ul onclick="alert(this.tagName)">
  11. <li onclick="alert(this.tagName)">text</li>
  12. </ul>
  13. </div>
  14. </body>
  15. </html>

通过给每个元素添加了点击事件来模拟一下事件的冒泡行为,点击一下 text




而事件代理是基于事件的冒泡行为来完成的,在事件代理中,事件的触发者(ev.target)通常是事件绑定者(ev.currentTarget)的的子元素,因为这样会让事件的传递效率更加的高效。

使用事件代理来完成一个简单的留言板案例

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <title>留言板</title>
  6. </head>
  7. <body>
  8. <label>留言板:&nbsp;&nbsp;<input type="text" name="messageBoard" /></label>
  9. <ol id="list"></ol>
  10. <script>
  11. // 获取元素
  12. const msg = document.querySelector("input");
  13. const lists = document.querySelector("#list");
  14. // 创建事件,当内容输入文本框时,将其打印到下边
  15. msg.onkeydown = (ev) => {
  16. // 键盘事件中的key属性,表示按下的键名
  17. // console.log(ev.key);
  18. if (ev.key === "Enter") {
  19. // 非空判断
  20. if (ev.currentTarget.value.length === 0) {
  21. alert("内容为空");
  22. msg.focus();
  23. } else {
  24. // 将留言内容添加到列表中
  25. // 创建留言
  26. let olStr = `<div><li>${ev.currentTarget.value}</li><button onclick="del(this)">删除</button></div>`;
  27. // 应该将最新的信息放在第一条
  28. lists.insertAdjacentHTML("afterBegin", olStr);
  29. // 按下回车后,清空留言板
  30. ev.currentTarget.value = null;
  31. }
  32. }
  33. };
  34. // 删除留言
  35. function del(ele) {
  36. // DOM接口的outerHTML属性获取描述元素(包括其后代)的序列化HTML片段。它也可以设置为用从给定字符串解析的节点替换元素。
  37. // 返回时,内容包含描述元素及其后代的序列化HTML片段。
  38. return confirm("是否删除?") ? (ele.parentNode.outerHTML = null) : false;
  39. }
  40. </script>
  41. </body>
  42. </html>

显示效果如下:

由于设置的是每次都是将最新的留言置顶,所以会让原来的留言自动向下排列

点击删除按钮,会弹窗提示,然后确认后会删除,如果是删除的中间的留言,会将后边的留言顺序自动调整一位。

更多相关文章

  1. 20个基础函数的练习
  2. php字符串函数解析
  3. KMP算法的JAVA实现
  4. 深入探索Redis的五种基础数据类型
  5. [牛客习题]逆置字符串
  6. 初识 PHP 运行原理及数据类型
  7. [牛课习题]判断字符串是否回文及统计回文
  8. php学习笔记(20个常用的字符串函数)
  9. 字符串函数

随机推荐

  1. Android init.rc文件解析过程分析
  2. Android和Linux kernel版本对应表
  3. android 相对布局,代码创建imageview,布局
  4. android音频口通信(二)——2FSK信号解调
  5. android中怎么调整字体的间距和行间距
  6. android lambda使用:Retrolambda Plugin
  7. Eclipse开发Android的配置(包括ADT安装,SDK
  8. Android R文件丢失解决办法
  9. Android Otto框架浅析
  10. Android 中webview与原生Java的 交互以及