原生JS实现留言板


Posted in Javascript onMarch 26, 2020

本文实例为大家分享了JS实现留言板的具体代码,供大家参考,具体内容如下

一、设计思路

这个留言板有两个大的版块,一个是留言板(主要是发布留言的内容会在上面显示),另一个是发布留言(可以在这里输入你想要留言的内容等)。下图是留言版做成的样子:

原生JS实现留言板

主要用到input textarea button img div等;还用到了date对象的知识来获取时间,innerHTML来修改span中的内容。之后就是使用DOM的知识来实现这些功能。

二、代码

html

<body οnlοad="f3()">
 <div class="title">
 <h1>留言板</h1>
 <span id="step">一共有()楼</span>
 </div>
 <div id="contents">
 <div class="box" id="box">
 <div class="div01">1楼</div>
 <div class="tit"><img src="img/i1.png"></div>
 <div class="main">
 <div>姓名:</div>
 <div>内容:</div>
 </div>
 <div class="div02">
 <div><a href="javascript:void (0)" οnclick="del(this)">删除</a>|<a href="javascript:void (0)" οnclick="praise(this,0)">点赞()</a> </div>
 <div>发布时间:</div>
 </div>
 </div>
 </div>
 <div class="title1">
 <h1>发布留言</h1>
 <span></span>
 </div>
 <div class="message">
 <div class="nav">
 选择头像:
 <div id="img">
 <img src="img/i1.png">
 <img src="img/i2.jpg">
 <img src="img/i3.jpg">
 </div>
 <div id="pic1"></div>
 <div>用户姓名:<input type="text" id="name" οnblur="f1(this)" οnfοcus="f(this,'请输入用户名!')"><span></span></div>
 <div>留言内容:<textarea id="textarea" οnblur="f1(this)" οnfοcus="f(this,'请输入内容!')"></textarea><span></span></div>
 <button οnclick="f2()">发布留言</button>
 </div>
 </div>
</body>

css

*{padding: 0;margin: 0;border: 0;text-decoration: none;}
.title{width: 1000px;height: 80px;background: #2b669a;margin: auto; color: #ffffff;}
.title h1{line-height: 80px;text-align: center;width: 920px;float: left;}
.title span{float: left;width: 80px;line-height: 80px;font-size: 12px;}
#contents{ width: 1000px;background:#9acfea;margin: auto;}
#contents .box{display:none;height: 150px;border-bottom: 1px dashed #ffffff;}
#contents .box .div01{width: 50px;text-align: center;float: left;line-height: 150px;}
#contents .box .tit{width: 80px;height: 80px;float: left;margin: 30px;}
#contents .box .tit img{width: 80px;height: 80px;}
#contents .box .main{width: 100px;height: 100px;float: left;margin-top: 30px;line-height: 40px;}
#contents .box .div02{font-size: 12px;width: 240px;height: 100px;float: right;line-height: 40px;margin-top: 30px;}
.title1{width: 1000px;height: 80px;background: #2b669a;margin: auto;color: #ffffff;}
.title1 span{float: left;width: 80px;line-height: 80px;font-size: 12px;}
.title1 h1{line-height: 80px;text-align: center;width: 920px;float: left;}
.message{width: 1000px;margin: auto;line-height:30px;background:#9acfea;height: 220px;}
.message .nav{width: 400px;margin-left: 400px;}
#img img{width:50px;height: 50px;}
.border{border: 1px solid crimson;}
.red{color:red;}
.border{border: 1px solid red;}

js

function f(obj,text) {
 obj.nextSibling.innerHTML=text;
 obj.nextSibling.style.color="#000";
 obj.nextSibling.style.fontSize=12+'px';
}
function f1(obj) {
 obj.nextSibling.innerHTML=" ";
}

//发布留言
var i = 0;
//i 为 box 的 id
var j = 0;
//j是一共有多少个楼,删除后的用它接收
var q =1;
function f2() {
 var name = document.getElementById("name");
 var main = document.getElementById("textarea");
 var box = document.getElementById("box");
 var contents = document.getElementById("contents");
 var step = document.getElementById("step");
 var pic1 =document.getElementById("pic1");
 if (name.value == "") {
 name.nextSibling.innerHTML="*必须填写用户名!";
 name.nextSibling.style.color="red";
 name.nextSibling.style.fontSize=10+'px';
 }else if(main.value == ""){
 main.nextSibling.innerHTML="必须填写内容";
 main.nextSibling.style.color="red";
 main.nextSibling.style.fontSize=10+'px';
 }else if(q==1){
 //选择头像
 pic1.innerHTML="必须选中一个头像!";
 pic1.style.color="red";
 pic1.style.fontSize=10+"px";
 }else {
 //楼层
 var div = box.cloneNode(true);
 div.style.display="block";
 i++;
 j++;
 div.id="box"+i;
 var child = div.getElementsByTagName("div");
 //获取克隆出来div里面的小div
 child[0].innerHTML=i+"楼";
 child[3].innerHTML="姓名:"+name.value;
 child[4].innerHTML="内容:"+main.value;
 step.innerHTML="一共有("+ j +")楼";
 child[7].innerHTML="发布时间"+oTime();
 contents.appendChild(div);
 }
}

//发布时间的时间
function oTime() {
 var date = new Date();
 var year = date.getFullYear();
 var month = date.getMonth()+1;
 var date1 = date.getDate();
 var day = date.getDay();
 var hour = date.getHours();
 var minutes = date.getMinutes();
 var second = date.getSeconds();
 if(day === 0){
 day = "日";
 }else if(day == 1){
 day = "一";
 }else if(day == 2){
 day = "二";
 }else if(day == 3){
 day = "三";
 }else if(day == 4){
 day = "四";
 }else if(day == 5){
 day = "五";
 }else if(day == 6){
 day = "六";
 }
 return year+"年"+month+"月"+date1+"日"+hour+":"+minutes+":"+second+"星期"+day;
}

//删除
function del(obj) {
 var step = document.getElementById("step");
 j--;
 step.innerHTML="一共有("+ j +")楼";
 //删除后一共有多少楼
 var contents = document.getElementById("contents");
 var p =obj.parentNode.parentNode.parentNode;
 //removeChild(p)表示把p删掉
 contents.removeChild(p);

}

//点赞
function praise(obj,t) {
 t++;
 var parent1 = obj.parentNode;
 parent1.innerHTML='<a href="javascript:void (0)" οnclick="del(this)">删除</a>|' +
 '<a href="javascript:void (0)" οnclick="praise(this,'+ t +')">点赞('+ t +')</a>';
}

//选择头像
function f3() {
 var img = document.getElementById("img");
 var pic = img.getElementsByTagName("img");
 var box = document.getElementById("box");
 var img1= box.getElementsByTagName("img");
 for(var a =0; a<pic.length;a++){
 pic[a].onclick=function () {
 for(var b=0;b<pic.length;b++){
 pic[b].className="";
 }
 this.className="border";
 img1[0].src = this.src;
 q=2;
 pic1.innerHTML="";
 }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JsEasy简介 JsEasy是什么?与下载
Mar 07 Javascript
javascript 火狐(firefox)不显示本地图片问题解决
Jul 05 Javascript
jquery利用ajax调用后台方法实例
Aug 23 Javascript
jQuery鼠标事件汇总
Aug 30 Javascript
jquery获取复选框的值的简单实例
May 26 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
Sep 06 Javascript
Vue.use源码分析
Apr 22 Javascript
vue-cli 使用axios的操作方法及整合axios的多种方法
Sep 12 Javascript
vue微信分享到朋友圈 vue微信发送给好友
Nov 28 Javascript
最简单的vue消息提示全局组件的方法
Jun 16 Javascript
JS监听组合按键思路及实现过程
Apr 17 Javascript
vue route新窗口跳转页面并且携带与接收参数
Apr 10 Vue.js
vue在线动态切换主题色方案
Mar 26 #Javascript
javascript实现简单搜索功能
Mar 26 #Javascript
jQuery实现html可联动的百分比进度条
Mar 26 #jQuery
vue+element 实现商城主题开发的示例代码
Mar 26 #Javascript
js实现带箭头的进度流程
Mar 26 #Javascript
Bootstrap实现前端登录页面带验证码功能完整示例
Mar 26 #Javascript
jquery css实现流程进度条
Mar 26 #jQuery
You might like
PHP session有效期问题
2009/04/26 PHP
一些被忽视的PHP函数(简单整理)
2010/04/30 PHP
linux下为php添加curl扩展的方法
2011/07/29 PHP
网页上facebook分享功能具体实现
2014/01/26 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
tp5实现微信小程序多图片上传到服务器功能
2018/07/16 PHP
Google韩国首页图标动画效果
2007/08/26 Javascript
jQuery源码分析-01总体架构分析
2011/11/14 Javascript
js解析与序列化json数据(三)json的解析探讨
2013/02/01 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
Javascript中 关于prototype属性实现继承的原理图
2013/04/16 Javascript
jquery移动listbox的值原理及代码
2013/05/03 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
jQuery实现鼠标经过弹出提示信息的地图热点效果
2015/08/07 Javascript
浅析Javascript中bind()方法的使用与实现
2016/05/30 Javascript
jQuery实现动态文字搜索功能
2017/01/05 Javascript
完美解决spring websocket自动断开连接再创建引发的问题
2017/03/02 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
从零开始学习Node.js系列教程一:http get和post用法分析
2017/04/13 Javascript
如何开发出更好的JavaScript模块
2017/12/22 Javascript
vue中v-cloak解决刷新或者加载出现闪烁问题(显示变量)
2018/04/20 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
JS校验与最终登陆界面功能完整示例
2020/01/13 Javascript
django自定义Field实现一个字段存储以逗号分隔的字符串
2014/04/27 Python
简化Python的Django框架代码的一些示例
2015/04/20 Python
Python OOP类中的几种函数或方法总结
2019/02/22 Python
Python如何在bool函数中取值
2020/09/21 Python
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
台湾母婴用品限时团购:妈咪爱
2018/08/03 全球购物
培训主管的岗位职责
2013/11/23 职场文书
财务部经理岗位职责
2014/02/03 职场文书
人大调研汇报材料
2014/08/14 职场文书
健康证明
2015/06/19 职场文书
2019年幼儿园管理条例范本!
2019/07/17 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书