原生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 相关文章推荐
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
Mar 17 Javascript
jquery带翻页动画的电子杂志代码分享
Aug 21 Javascript
Node.js实用代码段之获取Buffer对象字节长度
Mar 17 Javascript
jQuery中iframe的操作(点击按钮新增窗口)
Apr 20 Javascript
javascript基础语法——全面理解变量和标识符
Jun 02 Javascript
Javascript基础学习笔记(菜鸟必看篇)
Jul 22 Javascript
JS返回只包含数字类型的数组实例分析
Dec 16 Javascript
微信小程序开发探究
Dec 27 Javascript
微信小程序联网请求的轮播图
Jul 07 Javascript
Vue.js实现图片的随意拖动方法
Mar 08 Javascript
三步实现ionic3点击退出app程序
Sep 17 Javascript
vue.js this.$router.push获取不到params参数问题
Mar 03 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应用程序来获取Web服务器的状态信息
2006/10/09 PHP
PHP 设置MySQL连接字符集的方法
2011/01/02 PHP
PHP应用JSON技巧讲解
2013/02/03 PHP
php绘图之在图片上写中文和英文的方法
2015/01/24 PHP
PHP里的单例类写法实例
2015/06/25 PHP
PHP实现事件机制的方法
2015/07/10 PHP
php使用Jpgraph创建3D饼形图效果示例
2017/02/15 PHP
超清晰的document对象详解
2007/02/27 Javascript
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
2013/07/09 Javascript
深入探密Javascript数组方法
2015/01/08 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
jQuery模拟窗口抖动效果
2017/03/15 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
JS严格模式知识点总结
2018/02/27 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
详解Vue组件之作用域插槽
2018/11/22 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
python分割列表(list)的方法示例
2017/05/07 Python
python中Matplotlib实现绘制3D图的示例代码
2017/09/04 Python
Python Learning 列表的更多操作及示例代码
2018/08/22 Python
浅谈Python基础—判断和循环
2019/03/22 Python
python实现支付宝转账接口
2019/05/07 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
海淘母婴商城:国际妈咪
2016/07/23 全球购物
XD健身器材:Kevlar球、Crossfit健身球
2019/03/26 全球购物
explicit和implicit的含义
2012/11/15 面试题
自我鉴定思想方面
2013/10/07 职场文书
5.12护士节演讲稿
2014/04/30 职场文书
2014年小学数学教师工作总结
2014/12/03 职场文书
初中作文评语集锦
2014/12/25 职场文书
刑事起诉书范文
2015/05/19 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
pytorch中的model.eval()和BN层的使用
2021/05/22 Python