基于JS实现留言板功能的代码是什么
Admin 2022-09-13 群英技术资讯 297 次浏览
言归正传,之前的案例相信大家都已经完全弄清楚了,还记得我们之前统计字数的那个案例吗?忘记的可以再去翻阅一下,今天就是在这个方法的基础上,把它变成一个留言版,就像我们之前的评论一样,是不是很期待呢?先来看一下效果图
输入昵称,选择头像,输入留言,点击广播就能够在下面显示出来了,是不是很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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
最在做项目过程中,大量的使用了Object.assign方法,发现这个还是挺好使用的,现在总结下Object.assign的基本使用。一、基本语法Object.assign(target, ...sources)二、基本概念O
这篇文章主要介绍了VUE使用ElementUI下拉框 @change事件数据不回显问题。具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
本文给大家分享一些JavaScript的基础知识,这里我们会一起了解JS的语法约和程序调试原理的内容,本文对于新手学习JavaScript有一定的帮助,需要的朋友可以了解看看。
blur当元素失去焦点时触发。focus当元素获得焦点时触发。focusin等于focus事件,但它冒泡。focusout是HTML事件blur的通用版本。
这篇文章主要介绍了vue插值表达式和v-text指令的区别,{{}}这种语法叫做插值表达式,在插值表达式中可以写任何合法的js表达式,下面来看看文章是怎么介绍该内容的吧,需要的朋友可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008