Blogger Information
Blog 70
fans 4
comment 5
visits 105131
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
JavaScript:留言板添加字数实时统计与禁止超出功能,部分字符串和数组方法功能使用
JiaJieChen
Original
1087 people have browsed it

留言板添加字数实时统计与禁止超出功能,部分字符串和数组方法功能使用

1.字符串方法

方法 含义
concat() 字符串拼装
slice() 取子串,可以正负数取数
trim() 删除字符串两边的空白字符
split() 将字符打散成数组

①concat字符串拼装

②slice取子串

③trim删除空白字符

可以看到空格也算一个字符串,我们用trim方法删除/过滤掉空白字符串看看长度

可以看到trim过滤掉了空白字符串,只剩下两个实体字符串了

④split将字符打散成数组


可以看到用split 传入了@ 把字符串隔开成了两个数组

2.数组方法

方法 含义
push() 尾部添加,入栈
pop() 尾部删除,出栈
unsift() 在数组头部添加
shift() 在数组头部删除
join() 将数组转为字符串
filter() 对每个成员应用回调函数进行处理返回true的成员
reduce() 归纳操作,将多个成员进行统计后单值返回

①push尾部添加,入栈

②pop尾部删除,出栈

3.留言板添加数字实时统计与禁止超出功能


留言板添加数字实时统计用的是oninput方法只要值发生变化时连续触发,不等失去焦点,限制长度用的是maxlength属性限制到100.

css代码块

  1. * {
  2. padding: 0;
  3. margin: 0;
  4. box-sizing: border-box;
  5. }
  6. body {
  7. background: lightseagreen;
  8. }
  9. /* from 表单请留言 */
  10. .comment {
  11. margin: 40px auto;
  12. display: grid;
  13. grid-template-columns: 1fr;
  14. grid-template-rows: 40px 1fr;
  15. place-items: center;
  16. gap: 5px;
  17. }
  18. .comment > label {
  19. color: white;
  20. font-size: 20px;
  21. }
  22. /*--------------------------*/
  23. /*留言文本框*/
  24. .comment > #content {
  25. width: 40em;
  26. border-radius: 0.5em;
  27. }
  28. #content:hover {
  29. box-shadow: lightcyan 0 0 1em;
  30. transition: 0.6s;
  31. }
  32. /*----------------------------*/
  33. /* 提交按钮样式*/
  34. .comment > .submit {
  35. width: 10rem;
  36. height: 2rem;
  37. background: lightcyan;
  38. border: none;
  39. cursor: pointer;
  40. }
  41. .comment > .submit:hover {
  42. box-shadow: 0 0 1em;
  43. }
  44. /* ---------------------------- */
  45. /*留言框样式*/
  46. .list {
  47. width: 40em;
  48. height: 30em;
  49. margin: 0px auto;
  50. background: white;
  51. font-style: normal;
  52. border-radius: 1em;
  53. }
  54. .list:hover {
  55. box-shadow: lightcyan 0 0 1em;
  56. transition: 0.6s;
  57. }
  58. .list > ul {
  59. padding: 1rem;
  60. background: none;
  61. box-shadow: none;
  62. }
  63. .list > ul:hover {
  64. box-shadow: none;
  65. }
  66. /* 提示*/
  67. .tishi {
  68. color: white;
  69. margin-top: 5px;
  70. }

html代码块

  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. @import url(comment.css);
  10. </style>
  11. </head>
  12. <body>
  13. <form action="" class="comment">
  14. <label for="content">请留言:</label>
  15. <textarea
  16. name="content"
  17. id="content"
  18. cols="30"
  19. rows="10"
  20. maxlength="100"
  21. placeholder="请留言不要超过100个字"
  22. ></textarea>
  23. <div class="tishi"></div>
  24. <span class="tishi"></span>
  25. <button class="submit" type="button" name="submit">提交</button>
  26. </form>
  27. <fieldset class="list">
  28. <legend style="font-weight: bolder; font-size: 1.3em">留言框</legend>
  29. <ul class="listm"></ul>
  30. <script>
  31. //留言板功能实现绑定在留言框
  32. //第一步拿到html里面的表单元素
  33. //拿到form表单
  34. const comment = document.querySelector(".comment");
  35. //拿到文本输入框
  36. const content = comment.content;
  37. //拿到提交按钮
  38. const submitBtn = comment.submit;
  39. //拿到列表项
  40. const Slistm = document.querySelector(".listm");
  41. //拿到提示项
  42. const tishi = document.querySelector(".tishi");
  43. //文本提示事件
  44. content.oninput = function () {
  45. if (content.value.length > 0 && content.value.length <= 100) {
  46. tishi.innerHTML = `您还可以输入${
  47. 100 - this.value.trim().length
  48. }个字符`;
  49. tishi.style.maxlength = "100";
  50. } else {
  51. content.oninput = function () {
  52. tishi.innerHTML = `您还可以输入${
  53. 100 - this.value.trim().length
  54. }个字符`;
  55. };
  56. }
  57. };
  58. //提交按钮事件触发绑定
  59. submitBtn.onclick = (ev) => {
  60. // trim()发方法是过滤空格
  61. //创建一个value变量,并且这个变量拿到输入文本框里的文字和过滤空格
  62. let value = content.value.trim();
  63. //做一个判断,判断文本款里的内容是否 > 0 或 <=100 个文字
  64. if (value.length > 0 && value.length <= 100) {
  65. //如果正确就镶嵌到列表中
  66. //首先创建li列表,然后拿到value的文字
  67. const newComment = document.createElement("li");
  68. //添加li的样式
  69. newComment.style.listStyle = "none";
  70. newComment.style.borderBottom = "1px solid ";
  71. newComment.style.height = "2em";
  72. newComment.style.margin = "5px";
  73. newComment.textContent = value;
  74. //添加删除按钮功能
  75. const deletBtn = document.createElement("button");
  76. deletBtn.textContent = "删除";
  77. deletBtn.style.width = "3rem";
  78. deletBtn.style.height = "1.2rem";
  79. deletBtn.style.cursor = "pointer";
  80. deletBtn.style.background = "cyan";
  81. deletBtn.style.border = "none";
  82. deletBtn.style.float = "right";
  83. //添加删除按钮事件
  84. deletBtn.onclick = function () {
  85. // confirm() 是个询问弹窗,里面有确定和取消
  86. if (confirm("是否删除")) {
  87. //确定是 true 取消是false
  88. //当前删除按钮的父节点是li,所以删除父节点就可以删除留言了
  89. this.parentNode.remove();
  90. //删除要通知客户
  91. alert("删除成功");
  92. //设置焦点
  93. content.focus();
  94. return false;
  95. }
  96. };
  97. //将删除功能添加到新留言后面
  98. newComment.append(deletBtn);
  99. //将新留言添加到留言框中
  100. Slistm.prepend(newComment);
  101. content.value = null;
  102. //并且通知客户添加成功
  103. alert("提交成功");
  104. //设置焦点
  105. content.focus();
  106. } else {
  107. //如果不正确就弹出窗口
  108. alert("没有内容或内容超出规定长度");
  109. //设置焦点
  110. content.focus();
  111. //跳出判断
  112. return false;
  113. }
  114. };
  115. </script>
  116. </fieldset>
  117. </body>
  118. </html>
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:看来你是老同学了, 加油
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post