原生js實現(xiàn)日歷效果
更新時間:2020年03月02日 09:36:20 作者:Controllerszzy
這篇文章主要為大家詳細(xì)介紹了原生js實現(xiàn)日歷效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了js實現(xiàn)日歷效果的具體代碼,供大家參考,具體內(nèi)容如下
html代碼
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>日歷插件</title> <link rel="stylesheet" href="./css/reset.css" > <link rel="stylesheet" href="./css/index.css" > </head> <body> <div class="show"> <button id="pre">上月</button> <span id="showtime">2019-01</span> <button id="next">下月</button> </div> <div class="box" id="box"> </div> </body> <script> // 獲取本月第一天 function getMonthDay(date){ date=new Date(date.valueOf()) date.setDate(1); return date } // 獲取本月最后一天 function getMonthLastDay(date){ date=new Date(date.valueOf()) date.setMonth(date.getMonth()+1); date.setDate(0); return date } //獲取本月的時間對象集合 function getMonth(date){ var arr=[] // 獲取本月第一天 var _date=getMonthDay(date) // // 獲取本月最后一天 var dataLast=getMonthLastDay(date).getDate() arr.push(new Date(_date.valueOf())) // 處理本月第一天 到本月最后一天 for(var i =1;i<dataLast;i++){ _date.setDate(_date.getDate()+1) arr.push(new Date(_date.valueOf())) } // 向前補(bǔ)全,重置為本月一號 _date=getMonthDay(date) var forln=_date.getDay() for(var i=0;i<forln;i++){ _date.setDate(_date.getDate()-1) arr.unshift(new Date(_date.valueOf())) } // 向后補(bǔ)全,重置為本月最后一天 _date=getMonthLastDay(date) forln=_date.getDay() for(var i=forln;i<6;i++){ _date.setDate(_date.getDate()+1) arr.push(new Date(_date.valueOf())) } return arr } // 將集合渲染到頁面 function renderTable(monthDateArr,date){ document.getElementById("showtime").innerHTML=`${date.getFullYear()}-${date.getMonth()+1}` var table=document.createElement('table') var trTh=document.createElement('tr') trTh.innerHTML=` <th>周日</th> <th>周一</th> <th>周二</th> <th>周三</th> <th>周四</th> <th>周五</th> <th>周六</th> ` table.appendChild(trTh) var tr=document.createElement('tr') for(let i in monthDateArr){ var td=document.createElement('td') td.innerHTML=monthDateArr[i].getDate() tr.appendChild(td) if((i*1+1)%7===0){ table.appendChild(tr) tr=document.createElement('tr') }else if(i == monthDateArr.length-1){ table.appendChild(tr) } } document.getElementById("box").innerHTML=table.outerHTML } var date=new Date() document.getElementById('pre').onclick=function(){ date.setDate(1) date.setMonth(date.getMonth()-1) renderTable(getMonth(date),date) } document.getElementById('next').onclick=function(){ date.setDate(1) date.setMonth(date.getMonth()+1) rrenderTable(getMonth(date),date) } renderTable(getMonth(date),date) </script> </html>
css代碼
.box{ width: 700px; margin: 0 auto; box-sizing: border-box; padding: 0 1px; } table{ width: 100%; } th,td{ width:100px; text-align: center; } th{ height: 30px; line-height: 30px; background: #e0e5e5; } td{ height: 70px; line-height: 70px; background: #f3f5f5; } .show{ display: flex; align-items: center; justify-content: center; }
更多精彩內(nèi)容請點擊專題《javascript日歷插件使用方法匯總》進(jìn)行學(xué)習(xí)
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
借用Google的Javascript API Loader來加速你的網(wǎng)站
加速頁面加載速度有一個方法就是把CSS和JS文件放到另外一個單獨的服務(wù)器上,這樣在訪問量比較大的情況下可以分擔(dān)主服務(wù)器的壓力2009-01-01javascript 圖片上傳預(yù)覽-兼容標(biāo)準(zhǔn)
js圖片上傳預(yù)覽2009-06-06前淘寶前端開發(fā)工程師阿當(dāng)?shù)腜PT中有JS技術(shù)理念問題
第一屆 web rebuild 北京會有個前淘寶前端開發(fā)工程師阿當(dāng)分享的 PPT 在公司團(tuán)隊內(nèi)部有同事下載的分享,然后看了。發(fā)現(xiàn)了有些技術(shù)理念的問題:2010-01-01javascript 獲取網(wǎng)頁標(biāo)題代碼實例
這篇文章主要介紹了javascript 獲取網(wǎng)頁標(biāo)題代碼實例,有需要的朋友可以參考一下2014-01-01