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

JS事件监听与派发及form常用事件、JS字符串、数组常用API

程序员文章站 2022-03-01 20:35:33
...

JS事件监听与派发及form常用事件

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8" />
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  7. <title>Document</title>
  8. </head>
  9. <body>
  10. <button>添加事件</button>
  11. <button>事件监听</button>
  12. <button>事件派发</button>
  13. <form action="#" name="eventForm" method="post">
  14. <fieldset>
  15. <legend>表单常用事件</legend>
  16. <input
  17. type="text"
  18. id="focus"
  19. placeholder="onFocus"
  20. onfocus="myFocus(this)"
  21. />
  22. <input
  23. type="text"
  24. id="blur"
  25. placeholder="onBlur"
  26. onblur="myBlur(this)"
  27. />
  28. <input
  29. type="text"
  30. name="change"
  31. id="change"
  32. placeholder="onChange"
  33. onchange="myChange(this)"
  34. />
  35. <input
  36. type="text"
  37. id="input"
  38. placeholder="onInput"
  39. oninput="myInput(this)"
  40. />
  41. <button name="submit" onclick="check(this)">提交</button>
  42. </fieldset>
  43. </form>
  44. <script>
  45. function show() {
  46. console.log(event.target);
  47. }
  48. // 添加事件
  49. let btn1 = document.querySelector("button:first-of-type");
  50. btn1.onclick = show;
  51. // 添加事件监听
  52. let btn2 = document.querySelector("button:nth-of-type(2)");
  53. btn2.addEventListener("click", show, false);
  54. // btn2.removeEventListener("click", show, false);
  55. // 事件派发
  56. let btn3 = document.querySelector("button:nth-of-type(3)");
  57. // 先添加一个事件,然后自动去的触发它
  58. btn3.addEventListener("click", show, false);
  59. // 创建一个自定义事件
  60. let myclick = new Event("click");
  61. // setInterval: 间歇式的定时器
  62. // dispatchEvent 派发事件
  63. setInterval(() => {
  64. btn3.dispatchEvent(myclick);
  65. }, 2000);
  66. // form常用事件
  67. function myFocus(ele) {
  68. ele.form.focus.value = "获取焦点";
  69. }
  70. function myBlur(ele) {
  71. ele.form.blur.value = "获取焦点,又失去焦点";
  72. }
  73. function myChange(ele) {
  74. ele.form.change.value = "值修改后,又失去焦点";
  75. }
  76. // input: 值发生改变就会触发,不必等失去焦点,与change不同
  77. function myInput(ele) {
  78. let input = document.querySelector("#input");
  79. let p = document.createElement("p");
  80. p.textContent = ele.form.input.value;
  81. input.insertAdjacentElement("afterend", p);
  82. }
  83. function check(ele) {
  84. // 防止默认的提交行为, 用户自定义
  85. event.preventDefault();
  86. // 防止冒泡
  87. event.stopPropagation();
  88. let focus = ele.form.focus;
  89. let blur = ele.form.blur;
  90. let change = ele.form.change;
  91. let input = ele.form.input;
  92. if (focus.value.length === 0) {
  93. alert("onFocus不能为空");
  94. return false;
  95. } else if (blur.value.length === 0) {
  96. alert("onBlur不能为空");
  97. return false;
  98. } else if (change.value.length === 0) {
  99. alert("onChange不能为空");
  100. return false;
  101. } else if (input.value.length === 0) {
  102. alert("onInput不能为空");
  103. return false;
  104. } else {
  105. alert("验证通过");
  106. }
  107. }
  108. </script>
  109. </body>
  110. </html>

图示:

" class="reference-link">JS事件监听与派发及form常用事件、JS字符串、数组常用API

字符串常用API

  1. <script>
  2. // 字符串常用API
  3. let str =
  4. "There is no such thing as a great talent without great will power. ——没有伟大的意志力,便没有雄才大略。";
  5. //字符串是数组
  6. // 索引从0开始:
  7. // [0->T,1->h,2->e,3->r...]
  8. // index = [0, str.length-1]
  9. // 字符串长度
  10. console.log(str.length);
  11. // charAt: 索引->元素
  12. console.log(str[3]);
  13. console.log(str.charAt(3));
  14. // indexOf: 字符->索引
  15. console.log(str.indexOf("有"));
  16. // search: indexOf一样,但支持正则等
  17. console.log(str.search("没有"));
  18. // concat: 字符串拼装
  19. // 直接用"+", 或者`模板字面量` 更方便
  20. console.log(str.concat("——巴尔扎克"));
  21. // replace: 替换
  22. console.log(str.replace("——", " — —"));
  23. // slice: 子串, 忽略结束索引的值
  24. console.log(str.slice(0, 66));
  25. // substr: 子串, 只需要知道取多少个
  26. // 第一个参数:正数:从前向后取。负数:从后向前取, -1最后一个, -2向前一个
  27. console.log(str.substr(2, 10));
  28. console.log(str.substr(-10, 5));
  29. // split: str->array
  30. // 通过设定的符号,将字符串分割成数组
  31. console.log(str.split(" "));
  32. console.log(str.split("."));
  33. console.log(str.split(""));
  34. // 第二个参数:指定分割后数组元素的个数
  35. console.log(str.split("", 4));
  36. // toLowerCase, toUpperCase 大小写转换
  37. console.log(str.toLowerCase());
  38. console.log(str.toUpperCase());
  39. // 与html相关 将字符串,用html标签包裹
  40. console.log(str.link("http:baidu.com"));
  41. console.log(str.bold());
  42. console.log(str.big());
  43. console.log(str.anchor("锚点"));
  44. </script>

数组常用API

  1. <script>
  2. // 数组元素可以是任何内容
  3. let arr = [
  4. 1,
  5. 2,
  6. "a",
  7. "b",
  8. true,
  9. { x: 1, y: 2 },
  10. [1, 2, 3],
  11. function () {},
  12. ];
  13. console.log(arr);
  14. // ...arr :将数组解压成一个一个的元素
  15. console.log(...arr);
  16. // [ ] :将元素放在数组中 。 [...arr]快速复制数组。
  17. let arr1 = [...arr];
  18. arr1 = arr;
  19. console.log(arr1);
  20. arr = [1, 2, 3, ...arr1, 4, 5];
  21. console.log(arr);
  22. // Array.of 生成数组
  23. arr = Array.of(...arr1);
  24. console.log(arr);
  25. // Array.from 将类似数组对象,转换为数组
  26. let likeArr = { 0: "red", 1: "blue", length: 2 };
  27. console.log(likeArr);
  28. console.log(Array.from(likeArr));
  29. // push,pop, unshift,shift,delete
  30. arr = [];
  31. // push:从尾部增加。pop:从尾部删除。后进先出。
  32. console.log(arr.push(1));
  33. console.log(arr.push(2));
  34. console.log(arr.push(3));
  35. console.log(arr);
  36. console.log(arr.pop());
  37. console.log(arr.pop());
  38. console.log(arr);
  39. // unshift:从头部增加。shift:从头部删除。后进先出。
  40. arr = [];
  41. console.log(arr.unshift(1));
  42. console.log(arr.unshift(2));
  43. console.log(arr.unshift(3));
  44. console.log(arr);
  45. console.log(arr.shift());
  46. console.log(arr.shift());
  47. console.log(arr);
  48. // delete:删除数组元素,但是位置还在,元素个数不变
  49. arr = [1, 2, 3];
  50. delete arr[1];
  51. console.log(arr);
  52. console.log(arr.length);
  53. // 通过改变元素个数,也可以删除元素
  54. arr.length = 2;
  55. console.log(arr);
  56. // 迭代方法, 遍历元素
  57. // 1. forEach,map
  58. // 2. every, some
  59. // 3. filter, find, findIndex
  60. // 4. reduce
  61. // forEach((item,index,arr)=>{...}), 每个元素逐个调用回调处理
  62. arr = [1, 2, 3, 4, 5];
  63. let res = arr.forEach(function (item, index, arr) {
  64. // 三个参数中, 只有第一个 item是必须的
  65. // console.log(item, index, arr);
  66. return item * 2;
  67. });
  68. // 没有返回值
  69. console.log(res);
  70. // map: 参数与功能 与forEach一样,只不过有返回值
  71. res = arr.map(function (item) {
  72. // console.log(item);
  73. return item * 10;
  74. });
  75. console.log(res);
  76. // every, some: 断言函数,返回true,false
  77. // every: 数组成员全部满足条件,则返回 true , 否则 false,“与”关系
  78. console.log(arr.every((item) => item > 0));
  79. console.log(arr.every((item) => item > 3));
  80. // some: 数组成员中只要有一个满足条件,就返回 true, 否则 false, “或”关系
  81. console.log(arr.some((item) => item > 3));
  82. console.log(arr.some((item) => item > 10));
  83. // filter: 返回数组中的满足条件的元素组成的新数组
  84. console.log(arr.filter((item) => item > 3));
  85. // find 找到第一个符合条件的元素
  86. console.log(arr.find((item) => item > 3));
  87. // findIndex 找到第一个符合条件的元素的序号
  88. console.log(arr.findIndex((item) => item > 3));
  89. // reduce: 归并
  90. // acc:默认读取第1个元素(在 reduce()没有第2个参数值的时候,否则为 reduce()第2个参数值),并保存最终结果
  91. // cur:当前元素值
  92. // index:当前元素的序号
  93. // arr:本数组
  94. res = arr.reduce(function (acc, cur, index, arr) {
  95. // 查看reduce的执行过程
  96. console.log("acc=", acc, "cur=", cur, "index=", index, "arr=", arr);
  97. // 最终结果用 acc 返回,
  98. return acc + cur;
  99. }, 5);
  100. console.log(res);
  101. arr = [1, 12, 5, 20];
  102. // sort 排序 默认排序顺序为按字母升序。在原数组上排序,不生成副本、
  103. console.log(arr.sort());
  104. // 升序
  105. console.log(arr.sort((a, b) => a - b));
  106. // 降序
  107. console.log(arr.sort((a, b) => b - a));
  108. // join 默认用逗号连接每个元素。 array -> String
  109. console.log(arr.join());
  110. console.log(arr.join("-"));
  111. arr = [1, 12, 5, 20];
  112. console.log(arr);
  113. // slice: 获取子元素,原数组不变
  114. console.log(arr.slice(2, 3));
  115. console.log(arr.slice(2));
  116. console.log(arr.slice(-3, 4));
  117. console.log(arr);
  118. // splice: 删除, 新增, 替换。会改变原数组
  119. // 删除
  120. console.log(arr);
  121. console.log(arr.splice(2, 3));
  122. console.log(arr);
  123. // 更新
  124. arr = [1, 12, 5, 20];
  125. console.log(arr.splice(1, 2, "a", "b"));
  126. console.log(arr);
  127. // 插入
  128. console.log(arr.splice(1, 0, "red", "green"));
  129. console.log(arr);
  130. let data = ["red", "green", "blue"];
  131. console.log(arr.splice(1, 0, ...data));
  132. console.log(arr);
  133. </script>