基于JS实现留言板功能的代码是什么
Admin 2022-09-13 群英技术资讯 698 次浏览
这篇文章主要介绍“基于JS实现留言板功能的代码是什么”,有一些人在基于JS实现留言板功能的代码是什么的问题上存在疑惑,接下来小编就给大家来介绍一下相关的内容,希望对大家解答有帮助,有这个方面学习需要的朋友就继续往下看吧。言归正传,之前的案例相信大家都已经完全弄清楚了,还记得我们之前统计字数的那个案例吗?忘记的可以再去翻阅一下,今天就是在这个方法的基础上,把它变成一个留言版,就像我们之前的评论一样,是不是很期待呢?先来看一下效果图


输入昵称,选择头像,输入留言,点击广播就能够在下面显示出来了,是不是很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进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
前端开发人员只要了解过vue.js框架可能都知道单文件组件。vue.js中的单文件组件允许在一个文件中定义一个组件的所有内容。这是一个非常有用的解决方案,在浏览器网页中已经开始提倡这种机制。
这篇文章主要介绍了Vue.extend 登录注册模态框的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
JS模拟实现串行加法器,下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家,下面我们一起来了解看看吧。
这篇文章主要介绍了JavaScript中展开运算符及应用的实例代码,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
这篇文章主要介绍了vue 动态添加class,三个以上的条件做判断方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008