博客列表 >js基础知识:字符串数组方法及留言本实例

js基础知识:字符串数组方法及留言本实例

未来星
未来星原创
2021年04月24日 10:59:00663浏览

一、留言本实例

熟悉事件添加及传递机制,创建留言本实例。具备留言字数实时统计与禁止超出功能。

输入留言内容:

留言按钮提交:

删除留言信息:

html+css+js代码:

  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>留言本实例</title>
  8. <style>
  9. * {
  10. margin: 0;
  11. padding: 0;
  12. box-sizing: border-box;
  13. }
  14. li {
  15. list-style: none;
  16. }
  17. body {
  18. background-color: rgb(174, 236, 236);
  19. color: #555;
  20. }
  21. .comment {
  22. width: 85%;
  23. margin: 1em auto;
  24. display: grid;
  25. gap: 0.5em;
  26. }
  27. .comment #content {
  28. resize: none;
  29. border: none;
  30. padding: 0.5em;
  31. outline: none;
  32. border-radius: 10px;
  33. }
  34. .comment #content:focus,
  35. .comment #content:hover {
  36. box-shadow: 0 0 8px steelblue;
  37. transition: 0.6s;
  38. }
  39. .comment .submit {
  40. width: 30%;
  41. margin-left: auto;
  42. background-color: lightseagreen;
  43. border: none;
  44. border-radius: 10px;
  45. outline: none;
  46. color: white;
  47. height: 2.5em;
  48. }
  49. .comment .submit:hover {
  50. background-color: seagreen;
  51. transition: 0.6s;
  52. cursor: pointer;
  53. }
  54. .contentlist {
  55. width: 85%;
  56. margin: auto;
  57. padding: 0.5em;
  58. border-radius: 10px;
  59. }
  60. .contentlist .list {
  61. width: 100%;
  62. /* background-color: yellow; */
  63. margin: auto;
  64. padding: 1em;
  65. color: #666;
  66. }
  67. .del-btn {
  68. background-color: wheat;
  69. color: red;
  70. padding: 0.5em 1em;
  71. /* height: 2.2em; */
  72. border: none;
  73. outline: none;
  74. }
  75. .del-btn:hover {
  76. cursor: pointer;
  77. background-color: lime;
  78. }
  79. </style>
  80. </head>
  81. <body>
  82. <form class="comment" method="post">
  83. <label for="content">请您留言:</label>
  84. <textarea name="content" id="content" cols="30" rows="6" placeholder="请在此留言"></textarea>
  85. <label class="tishi"></label>
  86. <button type="button" name="submit" class="submit">提交</button>
  87. </form>
  88. <hr width="100%" align="center" />
  89. <fieldset class="contentlist">
  90. <legend>留言列表</legend>
  91. <ul class="list"></ul>
  92. </fieldset>
  93. <script>
  94. // 获取元素
  95. const comment = document.querySelector(".comment");
  96. const content = comment.content;
  97. const submitBtn = comment.submit;
  98. const contishi = document.querySelector(".tishi");
  99. const comlist = document.querySelector(".list");
  100. //输入留言提示,超出限制字数截取显示
  101. content.oninput = (ev) => {
  102. if (content.value.trim().length < 100) {
  103. contishi.textContent = `还可以输入${100 - content.value.trim().length}个字`;
  104. } else {
  105. contishi.textContent = `还可以输入0个字`;
  106. content.value = content.value.substr(0, 100);
  107. }
  108. };
  109. // 提交留言按钮事件
  110. let i = 0;
  111. submitBtn.onclick = (ev) => {
  112. ++i;
  113. let str = i + "、" + content.value;
  114. // 将留言插入到列表中
  115. const newComment = document.createElement("li");
  116. newComment.textContent = str;
  117. newComment.style.borderBottom = "1px solid white";
  118. newComment.style.minHeight = "2em";
  119. // 为每一条留言添加删除按钮
  120. const delBtn = document.createElement("button");
  121. delBtn.textContent = "删除";
  122. delBtn.style.float = "right";
  123. delBtn.classList.add("del-btn");
  124. //删除留言按钮事件
  125. delBtn.onclick = function () {
  126. if (confirm("是否删除")) {
  127. // 确定:true,取消: false
  128. this.parentNode.remove();
  129. alert("删除成功");
  130. content.focus();
  131. return false;
  132. }
  133. };
  134. // 判断留言长度,添加列表
  135. if (content.value.length > 0 && content.value.length <= 100) {
  136. // 将删除按钮添加到新留言的后面
  137. newComment.append(delBtn);
  138. // 将新留言添加到列表的头部
  139. comlist.prepend(newComment);
  140. // 通知用户
  141. alert("留言成功");
  142. content.value = null;
  143. contishi.textContent = null;
  144. content.focus();
  145. } else {
  146. alert("未输入留言或留言内容超过100字");
  147. content.focus();
  148. return false;
  149. }
  150. };
  151. </script>
  152. </body>
  153. </html>

二、字符串数组方法

1、字符串

方法 含义
concat() 字符串拼装
slice() 取子串,可以正负数取数(start, end)
substr() 取子串,可以正负数取数(start, size)
trim() 删除字符串两边的空白字符
split() 将字符打散成数组
  1. //concat() 拼接
  2. let str = "html".concat("css", "js", "php", "!", 888);
  3. console.log(str); // htmlcssjsphp!888
  1. //slice(start, end) 从字符串中截取,不改变原字符串
  2. const email = 'tp@qq.com';
  3. let emailS = email.slice(3);
  4. console.log(emailS); // qq.com
  1. //substr(start, size) 从字符串中截取,不改变原字符串
  2. res = str.substr(0, 5);
  3. console.log(res); // hello
  4. res = str.substr(-6, 3);
  5. console.log(res); // php
  1. //trim()删除两端空白字符
  2. let str = " Hello Edureka! ";
  3. console.log(str.length); // 24
  4. console.log(str.trim()); // Hello Edureka!
  5. console.log(str.trim().length); // 14
  1. //split("") 把字符串拆分为数组
  2. let str = "abcdefg";
  3. let res = str.split('');
  4. console.log(res); // ["a", "b", "c", "d", "e", "f", "g"]
  5. // 从一个邮箱中解析出用户名和邮箱地址
  6. let email = "abc@qq.com";
  7. res = email.split("@");
  8. console.log(email.split("@")); // ["abc", "qq.com"]
  9. console.log("userName=",res[0]); // abc
  10. console.log("emailAddress=",res[1]); // qq.com

2、数组

方法 含义
concat() 字符串、数组拼装
push() 尾部添加,入栈
pop() 尾部删除,出栈
unsift() 在数组头部添加
shift() 在数组头部删除
join() 将数组转为字符串
slice() 取部分成员(start,end)
splice() 数组增删改(index,howmany,item1,…..,itemX)
filter() “过滤”功能,对每个成员应用回调函数进行处理返回true的成员
reduce() 归纳操作,将多个成员进行统计后单值返回
  1. //concat() 拼接,返回由两个数组组合而成的新数组
  2. arr = ['a','b','c','d'];
  3. console.log(arr.concat(['aa','bb'])); //[a,b,c,d,aa,bb]
  1. //push() 数组尾部添加元素, 返回数组长度
  2. arr = ['a','b','c','d'];
  3. console.log(arr.push('e')); //5
  4. console.log(arr); //[a,b,c,d,e]
  1. //pop() 从数组尾部取出一个, 返回取出的元素
  2. arr = ['a','b','c','d'];
  3. console.log(arr.pop()); //d
  4. console.log(arr); //[a,b,c]
  1. //unshift 从数组头部添加元素
  2. arr = ['a','b','c','d'];
  3. console.log(arr.unshift('aa'));
  4. console.log(arr); //[aa,a,b,c,d]
  1. //shift 从数组头部取出一个元素
  2. arr = ['a','b','c','d'];
  3. console.log(arr.shift()); //5
  4. console.log(arr); //[b,c,d]
  1. //join() 将数组元素以指定字符拼接为字符串,返回一个字符串,原数组不变。
  2. arr = ['a','b','c','d'];
  3. console.log(arr.join()); //'a,b,c,d'
  4. let arr = [1,2,3,4,5,6];
  5. console.log(arr.join()); // 1,2,3,4,5,6
  6. console.log(arr.join("-")); // 1-2-3-4-5-6
  1. //slice(start,end) 取对应部分的成员
  2. arr = [1, 2, 3, 4, 5];
  3. res = arr.slice(0, 3);
  4. console.log(res); // [1,2,3]
  5. res = arr.slice(-2);
  6. console.log(res); // [4,5]
  1. //splice(index,howmany,item1,.....,itemX)
  2. //howmany 为0表示增加成员
  3. arr = [1, 2, 3, 4, 5];
  4. // 不删除元素,将第2个参数设为0,但是要传入第三个参数
  5. res = arr.splice(1, 0, 88, 99);
  6. console.log(arr); // [1, 88, 99, 2, 3, 4, 5]
  7. //howmany 为非0表示数字,表示删除成员
  8. arr = [1, 2, 3, 4, 5];
  9. // 删除2个参数
  10. res = arr.splice(2, 2);
  11. console.log(res); // [3,4]
  12. console.log(arr); // [1,2,5]
  13. //howmany 数量与第三个参数数量相同时相当于更新
  14. // 更新元素,将第2个参数设为删除数量,但是要传入第三个参数,用来替换掉被删除的元素
  15. arr = [1, 2, 3, 4, 5];
  16. res = arr.splice(1, 2, ...[88, 99]);
  17. console.log(arr); // [1,88,99,4,5]
  1. //filter() 对数组的每个元素调用定义的回调函数,并返回回调函数为其返回 true 的数组。
  2. arr = [1,2,3,4,5];
  3. console.log(arr.filter((ev)=>ev%2)); //取奇数
  1. //reduce()方法从数组的第一项开始,逐个遍历到最后。
  2. res = [1, 2, 3, 4, 5];
  3. // res = arr.reduce(function (prev, curr) {
  4. // return (prev += curr);
  5. // });
  6. res = arr.reduce((prev, curr) => (prev += curr), 20); // 可以增加个初始值20
  7. console.log(res); // 35
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议