基于JS实现留言板功能的代码是什么
Admin 2022-09-13 群英技术资讯 466 次浏览
言归正传,之前的案例相信大家都已经完全弄清楚了,还记得我们之前统计字数的那个案例吗?忘记的可以再去翻阅一下,今天就是在这个方法的基础上,把它变成一个留言版,就像我们之前的评论一样,是不是很期待呢?先来看一下效果图
输入昵称,选择头像,输入留言,点击广播就能够在下面显示出来了,是不是很nice呢,具体怎么实现的呢,我们来看代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>留言板</title> <style> *{ margin: 0 auto; } #box{ width: 50%; border: 4px solid olivedrab; padding: 10px 30px; height: 800px; } #box img{ width: 30px; height: 30px; margin: 10px 0; } #tex{ width: 100%; margin: 10px 0; } .count{ float: right; color: silver; } #btn{ width: 50px; height: 25px; background: orange; color: white; border-radius: 5px; outline: none; border: 0px; line-height: 25px; } #content{ margin: 50px 0; } .list{ padding: 5px; height: 80px; border-bottom: 1px solid black; position: relative; } .list button{ display: none; position: absolute; right: 0; top: 40px; background: orange; color: white; border-radius: 5px; outline: none; border: 0px; } </style> </head> <body> <div id="box"> 昵称:<input type="text" id="userName"><br/> 请选择头像<span> <img src = "imgs/01.jpg" align="absmiddle"/> <img src = "imgs/02.jpg" align="absmiddle"/> <img src = "imgs/03.jpg" align="absmiddle"/> <img src = "imgs/04.jpg" align="absmiddle"/> </span> <textarea name="" id="tex" cols="30" rows="10" maxlength="150" placeholder="请输入留言"></textarea> <div class="count">还可以输入 <span id="left">150</span>个字 <button id="btn">广播</button> </div> <div id="content"> <!-- <div id="list"> <span>昵称</span> <span>内容</span> <div>时间</div> <button>删除</button> </div> --> </div> </div> <script> //页面加载渲染 window.onload = function(){ if(localStorage.arr1113){ arr = JSON.parse(localStorage.arr1113) show(arr) }else{ arr = [] } } //获取Dom元素 var userName = document.querySelector("#userName") var btn = document.getElementById("btn") var left = document.getElementById("left") var txt = document.getElementById("tex") //计算剩余字符 txt.oninput = function(){ var len = txt.maxLength-txt.value.length left.innerHTML = len } //选择图片 var pic = document.querySelectorAll("#box img") var src = '' for(var i = 0;i<pic.length;i++){ pic[i].onclick = function(){ for(var j = 0;j<pic.length;j++){ pic[j].style.border ="" } this.style.border = "1px solid red" src = this.src } } //点击广播 var arr = [] btn.onclick = function(){ if(userName.value==''||txt.value ==''){ alert("请输入昵称和留言") }else{ var obj = { id:+new Date(), name:userName.value, content:txt.value, time:timer(), src:src } arr.unshift(obj) userName.value = '' txt.value = '' localStorage.arr1113 = JSON.stringify(arr) show(arr) } } //渲染函数 function show(arr){ var str = '' var contents = document.getElementById("content") contents.innerHTML = '' for(var i = 0;i<arr.length;i++){ str +=` <div class = "list"> <img src = "${arr[i].src}" align="absmiddle"> <span>${arr[i].name} </span> <span>${arr[i].content}</span> <br/> <span>${arr[i].time}</span> <button οnclick="del(${arr[i].id})">删除</button> </div> ` } contents.innerHTML = str } //删除函数 function del(id){ arr.forEach(function(ele,index){ if(id ==arr[index].id){ arr.splice(index,1) show(arr) localStorage.arr1113 = JSON.stringify(arr) } }) } //获取时间 function timer(){ var now = new Date() var month = now.getMonth()+1 var day = now.getDate() var hours = now.getHours() var min = now.getMinutes() var result = check(month)+"月"+check(day)+"日 "+check(hours)+":"+check(min) return result } //检查时间少于10前面添上0 function check(n){ n = n<10 ? "0"+n : n return n } //移入移出效果函数----利用事件委托处理 var contents = document.getElementById("content") contents.onmouseover = function(event){ var enent = event || window.event var target = event.target || window.srcElement if(target.nodeName.toLowerCase() == "div"){ target.style.background = "gray" var delBtn = target.lastElementChild delBtn.style.display = "block" } } contents.onmouseout = function(event){ var enent = event || window.event var target = event.target || window.srcElement if(target.nodeName.toLowerCase() == "div"){ target.style.background = "" var delBtn = target.lastElementChild delBtn.style.display = "" } } </script> </body> </html>
主要是Js的代码,css样式可以按照自己的想法去操作,打造属于自己的style
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
众所周知,使用element-ui,为了达到减小项目体积的目的 ,我们在实际项目中更多的是采用按需引入的方法, 下面就来讲讲那些我踩过的坑。步骤:第一步:安装 element-ui 时把 element 也安装一下,执行命令 npm i element-ui -S 和 npm i element -S第二步:安装 ba
这个只是一个分页的demo,主要是思路整理(很久之前项目用的东西)分页实现的效果 主要是 左侧上一页 右侧是下一页 中间显示主要是超过5个显示 省略号 然后是可配置选项实现之后的效果首先需要初始化该对象的一些基本属性,显示总页码数,中间显示的页面数, 添加一个回调函数,在页面变化激活回调函数并返回当前页面和一些需要的其
常规的列表展示界面,一般分为几个区域,一个是查询区域,一个是列表展示区域,一个是底部的分页组件区域。查询区域主要针对常规条件进行布局,以及增加一些全局或者批量的操作,如导入、导出、添加、批量添加、批量删除等按钮
这篇文章主要给大家分享用JS实现动态表格效果,也就是点击增加或者删除就可以自动增加或删除表格的行,小编觉得还是比较实用的,感兴趣的朋友可以参考一下,希望大家阅读完这篇文章能有所收获,下面我们一起来学习一下吧。
这篇文章给大家分享的是JavaScript如何清空文本框的值。在网页设计中,文本框的使用是很常见的,为了提供网页访问者的使用体验,一键清除文本框的内容很加分,那么这个效果怎样做呢?文中的示例代码介绍得很详细,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008