原生JS實(shí)現(xiàn)留言板
本文實(shí)例為大家分享了JS實(shí)現(xiàn)留言板的具體代碼,供大家參考,具體內(nèi)容如下
一、設(shè)計(jì)思路
這個(gè)留言板有兩個(gè)大的版塊,一個(gè)是留言板(主要是發(fā)布留言的內(nèi)容會(huì)在上面顯示),另一個(gè)是發(fā)布留言(可以在這里輸入你想要留言的內(nèi)容等)。下圖是留言版做成的樣子:

主要用到input textarea button img div等;還用到了date對(duì)象的知識(shí)來(lái)獲取時(shí)間,innerHTML來(lái)修改span中的內(nèi)容。之后就是使用DOM的知識(shí)來(lái)實(shí)現(xiàn)這些功能。
二、代碼
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>內(nèi)容:</div> </div> <div class="div02"> <div><a href="javascript:void (0)" οnclick="del(this)">刪除</a>|<a href="javascript:void (0)" οnclick="praise(this,0)">點(diǎn)贊()</a> </div> <div>發(fā)布時(shí)間:</div> </div> </div> </div> <div class="title1"> <h1>發(fā)布留言</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,'請(qǐng)輸入用戶名!')"><span></span></div> <div>留言內(nèi)容:<textarea id="textarea" οnblur="f1(this)" οnfοcus="f(this,'請(qǐng)輸入內(nèi)容!')"></textarea><span></span></div> <button οnclick="f2()">發(fā)布留言</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=" ";
}
//發(fā)布留言
var i = 0;
//i 為 box 的 id
var j = 0;
//j是一共有多少個(gè)樓,刪除后的用它接收
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="*必須填寫(xiě)用戶名!";
name.nextSibling.style.color="red";
name.nextSibling.style.fontSize=10+'px';
}else if(main.value == ""){
main.nextSibling.innerHTML="必須填寫(xiě)內(nèi)容";
main.nextSibling.style.color="red";
main.nextSibling.style.fontSize=10+'px';
}else if(q==1){
//選擇頭像
pic1.innerHTML="必須選中一個(gè)頭像!";
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");
//獲取克隆出來(lái)div里面的小div
child[0].innerHTML=i+"樓";
child[3].innerHTML="姓名:"+name.value;
child[4].innerHTML="內(nèi)容:"+main.value;
step.innerHTML="一共有("+ j +")樓";
child[7].innerHTML="發(fā)布時(shí)間"+oTime();
contents.appendChild(div);
}
}
//發(fā)布時(shí)間的時(shí)間
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);
}
//點(diǎn)贊
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 +')">點(diǎn)贊('+ 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="";
}
}
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Electron實(shí)現(xiàn)右鍵保存圖片到本地功能
Electron是開(kāi)發(fā)跨平臺(tái)pc客戶端的利器,最近在使用它時(shí)遇到一個(gè)需要右鍵保存頁(yè)面中圖片的功能,Electron雖使用了Chromium內(nèi)核但卻無(wú)法直接使用系統(tǒng)右鍵,需要自定義右鍵菜單,然后添加圖片保存功能,以下是我的使用方法,需要的朋友可以參考下2024-07-07
『JavaScript』限制Input只能輸入數(shù)字實(shí)現(xiàn)思路及代碼
一個(gè)文字方塊必須限制只能輸入數(shù)字(或是小數(shù)點(diǎn))并且要支援 IE 和 Firefox,接下來(lái)為大家介紹下如何解決這個(gè)需求2013-04-04
uniapp原生tabbar設(shè)置并添加數(shù)字角標(biāo)或小紅點(diǎn)提示功能
這篇文章主要給大家介紹了關(guān)于uniapp原生tabbar設(shè)置并添加數(shù)字角標(biāo)或小紅點(diǎn)提示功能的相關(guān)資料,在相應(yīng)的頁(yè)面中完成對(duì)消息的處理,如果有新消息,則在tabBar頁(yè)面中顯示紅點(diǎn)提醒用戶,需要的朋友可以參考下2023-08-08
JS使用canvas繪制旋轉(zhuǎn)風(fēng)車(chē)動(dòng)畫(huà)
這篇文章主要為大家詳細(xì)介紹了JS使用canvas繪制旋轉(zhuǎn)風(fēng)車(chē)動(dòng)畫(huà),有加速減速啟動(dòng)停止功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
JavaScript私有屬性的實(shí)現(xiàn)方式及對(duì)比詳解
在 JavaScript 中,私有屬性是指只能在類或?qū)ο髢?nèi)部訪問(wèn)的屬性,外部無(wú)法直接訪問(wèn)或修改,隨著 JavaScript 語(yǔ)言的發(fā)展,實(shí)現(xiàn)私有屬性的方式也在不斷演進(jìn),本文將介紹幾種常見(jiàn)的實(shí)現(xiàn)私有屬性的方法,并對(duì)比它們的優(yōu)缺點(diǎn),幫助開(kāi)發(fā)者選擇適合的方案,需要的朋友可以參考下2025-03-03
JS彈出對(duì)話框?qū)崿F(xiàn)方法(三種方式)
這篇文章主要介紹了JS彈出對(duì)話框?qū)崿F(xiàn)方法,結(jié)合實(shí)例形式分析了三種方式,包括alert、confirm及prompt,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-12-12
layui 點(diǎn)擊重置按鈕, select 并沒(méi)有被重置的解決方法
今天小編就為大家分享一篇layui 點(diǎn)擊重置按鈕, select 并沒(méi)有被重置的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09

