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

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

JiaJieChen
JiaJieChen原创
2021年04月10日 18:02:401086浏览

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

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