js控住DOM實(shí)現(xiàn)發(fā)布微博效果
這段代碼的效果具體是輸入標(biāo)題和內(nèi)容,點(diǎn)擊發(fā)布把消息發(fā)布出去,并使最新的消息始終在內(nèi)容的最上面,代碼為:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>微博消息效果</title> <style> *{margin:0;padding: 0;} .warp{ width: 600px; margin:50px auto 0; background-color: #ccc; } #box{ width: 600px; height: 340px; /*background-color: #ccc;*/ position: relative; /*overflow: hidden;*/ /*margin:50px auto 0;*/ font-family: '微軟雅黑'; } #box .span1{ position: absolute; font-size: 16px; line-height: 16px; top: 10px; left: 5px; } #box .span2{ position: absolute; font-size: 16px; line-height: 16px; top: 50px; left: 5px; } #title{ position: absolute; width: 460px; height: 20px; line-height: 20px; font-size: 16px; text-indent: 5px; left: 70px; top: 6px; } #text{ position: absolute; width: 460px; height: 250px; resize: none; top: 50px; left: 70px; text-indent: 5px; font-size: 16px; } #box #prompt{ position: absolute; top: 312px; left: 340px; } #prompt1{ position: absolute; top: 312px; left: 340px; display: none; } #send{ position: absolute; height: 25px; width: 60px; line-height: 20px; font-size: 16px; top: 310px; right: 68px; } #news{ list-style: none; width: 490px; margin:10px auto 0px; padding-bottom: 5px; } #news li{ width: 490px; font-size: 14px; overflow: hidden; background-color: #fff; margin-bottom: 5px; position: relative; } #news li h1{ font-size: 16px; line-height: 20px; } #news li p{ text-indent: 5px; clear: left; } #news li span{ position: absolute; top: 0px; right: 0px; cursor: pointer; } #news span:hover{ color: red; } </style> </head> <body> <div class="warp"> <div id="box"> <span class='span1'>標(biāo)題:</span> <input id="title" type="text"> <span class="span2">內(nèi)容:</span> <textarea id="text"></textarea> <em id="prompt">還可以輸入<var id="textnum">200</var>字</em> <em id="prompt1">你已超出<var id="textnum1"></var>字</em> <button id="send">發(fā)送</button> </div> <ul id="news"> <li><h1></h1><span></span> <p></p> </li> </ul> </div> <script> var title=document.getElementById('title'); var text=document.getElementById('text'); var send=document.getElementById('send'); var ul=document.getElementById('news'); var lis=ul.getElementsByTagName('li'); var prompt=document.getElementById('prompt'); var prompt1=document.getElementById('prompt1'); var textnum=document.getElementById('textnum'); var textnum1=document.getElementById('textnum1'); var timer1=null,timer2=null; send.onclick=function(){ if (text.value==''||title.value=='') { alert('親~標(biāo)題或內(nèi)容不能為空');return false; } lis[0].innerHTML='<h1>'+title.value+'</h1><span>×</span><p>'+text.value+'</p>'; lis[0].children[1].setAttribute('id','close'); var newLi=document.createElement('li'); ul.insertBefore(newLi,lis[0]); maxheight=lis[1].clientHeight; lis[1].style.height=0+'px'; var x=0; var minstep=0; var maxstep=20; var change=maxheight/maxstep; clearInterval(timer1); timer1=setInterval(function(){ minstep++; if (minstep>=maxstep) { clearInterval(timer1); } x+=change; lis[1].style.height=x+'px'; },10) title.value=''; text.value=''; var close=document.getElementById('close'); for (var i = 0; i < lis.length; i++) { close.onclick=function(){ var isme=this.parentNode; var x=this.parentNode.clientHeight; var minstep=0; var maxstep=20; var change=x/maxstep; clearInterval(timer1); timer1=setInterval(function(){ minstep++; if (minstep>=maxstep) { clearInterval(timer1); ul.removeChild(isme); } x-=change; isme.style.height=x+'px'; },10) // ul.removeChild(lis[i]);//不可以,不知道綁定的是第幾個(gè)。 } } } text.onfocus=function(){ // console.log(prompt.children[0].innerHTML);//children是指帶有標(biāo)簽的子節(jié)點(diǎn); timer2=setInterval(function(){ if(text.value.length<190){ var num=200-text.value.length; textnum.style.color='black'; // prompt.style.color='black'; textnum.innerHTML=num;// // prompt.innerHTML='還可以輸入<var id="textnum">'+num+'</var>字</em>'; } if (text.value.length>=190&&text.value.length<=200){ var num=200-text.value.length; // prompt.style.color='black'; textnum.style.color='red';//為什么不變紅呢?因?yàn)檫@他妹的也是一個(gè)未來事件! // prompt.innerHTML='還可以輸入<var id="textnum">'+num+'</var>字</em>'; textnum.innerHTML=num; } if (text.value.length>200){ var num=text.value.length-200; // prompt.style.color='red'; prompt.style.display='none'; prompt1.style.display='block'; textnum1.style.color='red'; textnum1.innerHTML=num; } // console.log(text.value.length); },50) } text.onblur=function(){ clearInterval(timer2); } </script> </body> </html>
這段代碼主要運(yùn)用了一些DOM節(jié)點(diǎn)操作的知識,純屬學(xué)習(xí)之余練手作品,大家可以參考參考。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript基礎(chǔ)入門之錯(cuò)誤捕獲機(jī)制
初級開發(fā)人員往往很少使用js的拋出和捕獲異常,但拋出和捕獲異常往往是非常必要的,這篇文章主要給大家介紹了關(guān)于JavaScript基礎(chǔ)入門之錯(cuò)誤捕獲機(jī)制的相關(guān)資料,需要的朋友可以參考下2021-08-08webpack4與babel配合使es6代碼可運(yùn)行于低版本瀏覽器的方法
這篇文章主要介紹了webpack4與babel配合使es6代碼可運(yùn)行于低版本瀏覽器的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10JavaScript深拷貝的幾種實(shí)現(xiàn)方法實(shí)例
javascript深拷貝是初學(xué)者甚至有經(jīng)驗(yàn)的開發(fā)著,都會經(jīng)常遇到問題,下面這篇文章主要給大家介紹了關(guān)于JavaScript深拷貝的幾種實(shí)現(xiàn)方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05js實(shí)現(xiàn)字符串轉(zhuǎn)日期格式的方法
這篇文章主要介紹了js實(shí)現(xiàn)字符串轉(zhuǎn)日期格式的方法,涉及javascript針對字符串與日期操作的相關(guān)技巧,需要的朋友可以參考下2015-05-05JS添加刪除一組文本框并對輸入信息加以驗(yàn)證判斷其正確性
需要添加幾組數(shù)據(jù)到數(shù)據(jù)庫,但是具體幾組數(shù)據(jù)不確定,有客戶來填寫,所以,這里我用JS進(jìn)行添加刪除子方案,并要對方案輸入的正確性加以判斷,感興趣的朋友可以了解下2013-04-04深入淺析JavaScript中的arguments對象(強(qiáng)力推薦)
這篇文章主要介紹了JavaScript中的arguments對象(強(qiáng)力推薦)的相關(guān)資料,非常不錯(cuò)具有參考借鑒價(jià)值,需要的朋友可以參考下2016-06-06