原生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 相关文章推荐
使用JS进行目录上传(相当于批量上传)
Dec 05 Javascript
js 弹出新页面避免被浏览器、ad拦截的一种新方法
Apr 30 Javascript
充分发挥Node.js程序性能的一些方法介绍
Jun 23 Javascript
jquery实现平滑的二级下拉菜单效果
Aug 26 Javascript
angularjs表格分页功能详解
Jan 21 Javascript
JS生成不重复的随机数组的简单实例
Jul 10 Javascript
Angular.js中数组操作的方法教程
Jul 31 Javascript
Vue.js项目实战之多语种网站的功能实现(租车)
Aug 07 Javascript
layui实现鼠标移动到单元格上显示数据的方法
Sep 11 Javascript
vue.js的状态管理vuex中store的使用详解
Nov 08 Javascript
解决vue admin element noCache设置无效的问题
Nov 12 Javascript
JSONP 的原理、理解 与 实例分析
May 16 Javascript
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检测apache mod_rewrite模块是否安装的方法
2015/03/14 PHP
js 优化次数过多的循环 考虑到性能问题
2011/03/05 Javascript
基于jquery的button默认enter事件(回车事件)。
2011/05/18 Javascript
js动态在form上插入enctype=multipart/form-data的问题
2012/05/24 Javascript
jQuery关键词说明插件cluetip使用指南
2015/04/21 Javascript
JavaScript获取URL汇总
2015/06/08 Javascript
点击按钮出现60秒倒计时的简单js代码(推荐)
2016/06/07 Javascript
JS上传图片预览插件制作(兼容到IE6)
2016/08/07 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
详解nodejs中的process进程
2017/03/19 NodeJs
详解axios 全攻略之基本介绍与使用(GET 与 POST)
2017/09/15 Javascript
chorme 浏览器记住密码后input黄色背景处理方法(两种)
2017/11/22 Javascript
node.js 模块和其下载资源的镜像设置的方法
2018/09/06 Javascript
js中async函数结合promise的小案例浅析
2019/04/14 Javascript
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
2020/03/04 Python
python3 使用ssh隧道连接mysql的操作
2020/12/05 Python
matplotlib部件之矩形选区(RectangleSelector)的实现
2021/02/01 Python
html5 canvas-1.canvas介绍(hello canvas)
2013/01/07 HTML / CSS
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
NBA欧洲商店(西班牙):NBA Europe Store ES
2019/04/16 全球购物
联想英国官网:Lenovo英国
2019/07/17 全球购物
园林毕业生自我鉴定范文
2013/12/29 职场文书
师范生的个人求职信范文
2014/01/04 职场文书
合作协议书模板
2014/10/10 职场文书
玩手机检讨书1000字
2014/10/20 职场文书
单位租房协议书样本
2014/10/30 职场文书
幼师小班个人总结
2015/02/12 职场文书
催款函范文
2015/06/24 职场文书
回门宴新娘答谢词
2015/09/29 职场文书
高中班主任心得体会
2016/01/07 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书
导游词之无锡东林书院
2019/12/11 职场文书
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL
Go语言空白表示符_的实例用法
2021/07/04 Golang