博客列表 >JS事件冒泡;常用字符串、数组函数

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

赵大叔
赵大叔原创
2022年01月09日 16:45:19448浏览

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