欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JS事件冒泡;常用字符串、数组函数

程序员文章站 2022-03-27 08:26:50
...

JS 运行机制

  • 捕获:外向内
  • 冒泡:内向外,向上级元素传递,常用=>简化代码:只在父级元素绑定事件
  • event.target: 事件绑定元素
  • event.currentTarget: 事件触发元素
  • event.stopPropagation: 阻止事件冒泡
  • event.preventDefault: 禁用表单按钮提交行为
STT 事件 说明
1 submit: 提交时触发
2 focus: 获取焦点时触发
3 blur: 失去焦点时触发
4 change: 值发生改变且失去焦点时触发
5 input: 值发生改变就会触发,不必等失去焦点,与 change 不同
  1. <div class="login-input">
  2. <span class="iconfont icon-yonghuming"></span>
  3. <input
  4. class="text"
  5. type="text"
  6. name="username"
  7. placeholder="Username"
  8. required=""
  9. onblur="dologin(this)"
  10. />
  11. </div>
  12. <div class="login-input">
  13. <span class="iconfont icon-mima"></span>
  14. <input
  15. class="text"
  16. type="password"
  17. name="password"
  18. placeholder="Password"
  19. required=""
  20. onblur="dologin(this)"
  21. />
  22. </div>
  23. <script>
  24. function dologin(ele) {
  25. // 1. 防止默认的提交行为, 用户自定义
  26. event.preventDefault();
  27. // 2. 防止冒泡
  28. event.stopPropagation();
  29. // 3. 非空验证
  30. // 每一个控件input,button 都有一个属性form ,和当前表单绑定
  31. console.log(ele.form);
  32. let username = ele.form.username;
  33. let password = ele.form.password;
  34. if (username.value.length === 0) {
  35. alert("邮箱不能为空");
  36. username.focus();
  37. return false;
  38. }
  39. if (password.value.length === 0) {
  40. alert("密码不能为空");
  41. password.focus();
  42. return false;
  43. }
  44. alert("验证通过");
  45. }
  46. </script>

字符串常用函数实例

  1. let str = "Help_10086";
  2. // 1. length 长度
  3. console.log(str.length);
  4. // 2. charAt: 索引->元素
  5. console.log(str.charAt(3));
  6. // 一般直接用[]读取
  7. console.log(str[3]);
  8. // 3. indexOf: 根据字符获取索引
  9. console.log(str.indexOf("中"));
  10. // 4. search: indexOf一样,但支持正则等
  11. console.log(str.search("文"));
  12. // 5. concat: 字符串拼装
  13. console.log(str.concat("(", "一路帮", ")"));
  14. // 直接用"+", 或者`模板字面量` 更方便
  15. // 6. replace: 替换
  16. console.log(str.replace("Help", "一路帮"));
  17. // str = "php";
  18. console.log(str);
  19. // 7. slice: 子串, 忽略结束索引的值
  20. console.log(str.slice(0, 3));
  21. // 8. substr: 子串, 只需要知道取多少个
  22. console.log(str.substr(0, 3));
  23. console.log(str.substr(3, 3));
  24. // -1最后一个, -2向前一个
  25. console.log(str.substr(-3, 3)); // 中文网
  26. // 9. split: str->array
  27. console.log(str.split(""));
  28. console.log(str.split("", 3));
  29. // 10. toLowerCase, toUpperCase 大小写转换
  30. console.log(str.toLowerCase());
  31. console.log(str.toUpperCase());
  32. // 11. 与html相关
  33. console.log(`<a href="https://help10086.cn">${str}</a>`);
  34. console.log(str.link("https://help10086.cn"));
  35. console.log(str.bold());
  36. console.log(str.big());
  37. console.log(str.anchor("url"));

数组常用函数实例

字面量

  1. // 字面量
  2. let arr = [12, 22, "a", "b", true, { x: 10, y: 20 }, [11, 21, 31], function () {}];
  3. console.log(arr);
  4. // ...rest 展开数组
  5. arr = [42, 52, 62];
  6. let arr1 = [...arr];
  7. console.log(arr1);
  8. arr = [1, 2, 3, ...arr, 7, 8, 9];
  9. console.log(arr);
  10. // Array.of
  11. // 原始数据有可能来自一个外部请求api或文件,而这个原始数据就是数组
  12. let a = [1, 2, 3, 4, 5, 6];
  13. // 经过一些其它操作,例如过滤,再重新生成
  14. arr = Array.of(...a);
  15. console.log(arr);
  16. // Array.from 类数组转数组
  17. const likeArr = {
  18. 0: "thinkbook",
  19. 1: "macbookpro",
  20. 2: "thinkpad",
  21. length: 3,
  22. };
  23. console.log(likeArr);
  24. console.log(Array.from(likeArr));

增删数组

  1. // push,pop, unshift,shift,delete
  2. let arr = [];
  3. // 1. 尾部增删,返回数组长度
  4. console.log(arr.push('help'));
  5. // 从左到右进入
  6. console.log(arr.push(10086, '.cn'));
  7. console.log(arr);
  8. // 尾部删除,返回被删除元素
  9. console.log(arr.pop());
  10. console.log(arr);
  11. console.log(arr.pop());
  12. console.log(arr.pop());
  13. // 2. 头部增删
  14. console.log(arr.unshift('一路帮'));
  15. // 从右到左进入
  16. console.log(arr.unshift('help', '10086'));
  17. console.log(arr);
  18. console.log(arr.shift());
  19. console.log(arr.shift());
  20. console.log(arr.shift());
  21. console.log(arr);
  22. // 删除任意元素
  23. arr = [1, 2, 3, 4, 5];
  24. delete arr[1];
  25. console.log(arr);
  26. console.log(arr.length);
  27. arr.length = 4;
  28. console.log(arr);

遍历数组

  1. // 迭代方法, 遍历元素
  2. // 1. forEach,map
  3. // 2. every, some
  4. // 3. filter, find, findIndex
  5. // 4. reduce
  6. // 1. forEach((item,index,arr)=>{...}), 每个元素逐个调用回调处理
  7. let arr = ['help', '10086', '.cn'];
  8. let res = arr.forEach(function (item, index, arr) {
  9. // 三个参数中, 只有第一个 item是必须的
  10. console.log(item, index, arr);
  11. // 常用于dom操作
  12. console.log(item)
  13. });
  14. // 没有返回值
  15. console.log(res);
  16. // 2. map: 参数与功能 与forEach一样,只不过有返回值
  17. res = arr.map(item => item + ' - zgb');
  18. console.log(res);
  19. // 3. every, some: 断言函数,返回true,false
  20. // every: 数组成员全部满足条件,则返回 true , 否则 false 与
  21. console.log(arr.every(item => item >= 0));
  22. console.log(arr.every(item => item >= 3));
  23. // some: 数组成员中只要有一个满足条件,就返回 true, 否则 false, 或
  24. console.log(arr.some(item => item >= 3));
  25. console.log(arr.some(item => item >= 10));
  26. // 4. filter: 返回数组中的满足条件的元素组成的新数组
  27. console.log(arr.filter(item => item >= 3)); // [3,4,5]
  28. // arr.filter(item => item >= 3)[0] -> find
  29. console.log(arr.find(item => item >= 3));
  30. console.log(arr.findIndex(item => item >= 3));
  31. // 5. reduce: 归并
  32. res = arr.reduce(function (acc, cur, index, arr) {
  33. // 查看reduce的执行过程
  34. console.log("acc=", acc, "cur=", cur, "index=", index, "arr=", arr);
  35. // 最终结果用 acc 返回, acc累加器
  36. return acc + cur;
  37. }, 5);
  38. console.log(res);

操作数组

  1. // 1. sort
  2. let arr = ['help', '10086', '.cn'];
  3. console.log(arr.sort());
  4. // asc
  5. console.log(arr.sort((a, b) => a - b));
  6. // desc
  7. console.log(arr.sort((a, b) => b - a));
  8. // 2. join: array -> string
  9. // string.split string -> array
  10. arr = ["thinkbook", "macbookpro", "thinkpad"]
  11. console.log(arr.join());
  12. console.log(arr.join("-"));
  13. // 3. slice: 子元素
  14. arr = ['help', '10086', '.cn',"thinkbook", "macbookpro", "thinkpad"]
  15. console.log(arr.slice(2, 5));
  16. console.log(arr.slice(2));
  17. console.log(arr.slice(-6, -3));
  18. // 4. splce: 删除, 新增, 替换
  19. // delete
  20. console.log(arr);
  21. console.log(arr.splice(1, 2));
  22. console.log(arr);
  23. // update
  24. console.log(arr.splice(1, 2, "a", "b"));
  25. console.log(arr);
  26. // insert
  27. console.log(arr.splice(1, 0, "red", "green"));
  28. console.log(arr);
  29. let data = ["red", "green", "blue"];
  30. console.log(arr.splice(1, 0, ...data));
  31. console.log(arr);
  32. // 数组反转, 数组拼装, 拉平与一维数组... mdn