原生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实现随机返回数组的一个元素
Aug 13 Javascript
限制文本框输入N个字符的js代码
May 13 Javascript
javascript自适应宽度的瀑布流实现思路
Feb 20 Javascript
将字符串中由空格隔开的每个单词首字母大写
Apr 06 Javascript
JavaScript实现Flash炫光波动特效
May 14 Javascript
javascript中substring()、substr()、slice()的区别
Aug 30 Javascript
Bootstrap每天必学之轮播(Carousel)插件
Apr 25 Javascript
JavaScript随机生成颜色的方法
Oct 15 Javascript
vue基于Vue2.0和高德地图的地图组件实例
Apr 28 Javascript
基于Particles.js制作超炫粒子动态背景效果(仿知乎)
Sep 13 Javascript
JavaScript实现的仿新浪微博原生态输入字数即时检查功能【兼容IE6】
Sep 26 Javascript
微信小程序url与token设置详解
Sep 26 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
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 2611816 bytes)
2014/11/08 PHP
php中fsockopen用法实例
2015/01/05 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
使Ext的Template可以解析二层的json数据的方法
2007/12/22 Javascript
JS正则中的RegExp对象对象
2012/11/07 Javascript
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
jQuery知识点整理
2015/01/30 Javascript
jQuery四种选择器使用及示例
2016/06/05 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
js中的关联数组与普通数组详解
2016/07/27 Javascript
jQuery简单实现title提示效果示例
2016/08/01 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
javascript实现文字无缝滚动
2016/12/27 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
基于canvas粒子系统的构建详解
2017/08/31 Javascript
vue多页面项目中路由使用history模式的方法
2019/09/23 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
使用vant的地域控件追加全部选项
2020/11/03 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
python自动发邮件库yagmail的示例代码
2018/02/23 Python
python读取文本绘制动态速度曲线
2018/06/21 Python
python3读取excel文件只提取某些行某些列的值方法
2018/07/10 Python
Python实现微信小程序支付功能
2019/07/25 Python
pandas数据处理之绘图的实现
2020/06/15 Python
在pycharm中文件取消用 pytest模式打开的操作
2020/09/01 Python
转党组织关系介绍信
2014/01/08 职场文书
总经理任命书
2014/03/29 职场文书
办公室主任岗位职责范本
2015/03/31 职场文书
永远是春天观后感
2015/06/12 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
Python 详解通过Scrapy框架实现爬取百度新冠疫情数据流程
2021/11/11 Python