博客列表 >JS事件监听与派发及form常用事件、JS字符串、数组常用API

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

云中
云中原创
2022年02月05日 16:52:36627浏览

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">

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