js原生日歷的實(shí)例(推薦)
突然發(fā)現(xiàn)日期對象可以進(jìn)行 加減 , 利用這個(gè)特性寫了一個(gè)可以說是對只要會(huì)JavaScript 的就可以寫的日歷;沒有各種算法,只有一些邏輯相信只要懂javascript就差不多看倆眼就會(huì)的日歷。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
*{
margin: 0px;
padding: 0px;
}
#data{
width: 280px;
border: 1px solid #000000;
margin: 20px auto;
}
#data > p{
display: flex;
}
#data > h5{
text-align: center;
}
#data > p > span{
padding: 0 10px;
}
#prev,#next{
cursor: pointer;
}
#nian{
flex: 1;
text-align: center;
}
#title{
overflow: hidden;
list-style: none;
background: #ccc;
}
#title > li{
float: left;
width: 40px;
height: 26px;
line-height: 26px;
text-align: center;
}
#date{
overflow: hidden;
list-style: none;
}
#date > li{
float: left;
width: 34px;
height: 34px;
margin: 1px 1px;
border: 2px solid rgba(0,0,0,0);
line-height: 34px;
text-align: center;
cursor: pointer;
}
#date > .hover:hover{
border: 2px solid red;
}
.active{
color: red;
}
</style>
</head>
<body>
<div id="data">
<p>
<span id="prev">上一月</span>
<span id="nian">2017</span>
<span id="next">下一月</span>
</p>
<h5 id="yue">一月</h5>
<ul id="title">
<li>日</li>
<li>一</li>
<li>二</li>
<li>三</li>
<li>四</li>
<li>五</li>
<li>六</li>
</ul>
<ul id="date">
</ul>
</div>
<script type="text/javascript">
var dat = new Date(); //當(dāng)前時(shí)間
var nianD = dat.getFullYear();//當(dāng)前年份
var yueD = dat.getMonth(); //當(dāng)前月
var tianD = dat.getDate(); //當(dāng)前天 這保存的年月日 是為了 當(dāng)?shù)竭_(dá)當(dāng)前日期 有對比
add(); //進(jìn)入頁面第一次渲染
function add(){
document.getElementById('date').innerHTML = "";
var nian = dat.getFullYear();//當(dāng)前年份
var yue = dat.getMonth(); //當(dāng)前月
var tian = dat.getDate(); //當(dāng)前天
var arr=["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"];
document.getElementById('nian').innerText = nian;
document.getElementById('yue').innerText = arr[yue];
var setDat = new Date(nian,yue + 1,1 - 1); //把時(shí)間設(shè)為下個(gè)月的1號(hào) 然后天數(shù)減去1 就可以得到 當(dāng)前月的最后一天;
var setTian = setDat.getDate(); //獲取 當(dāng)前月最后一天
var setZhou = new Date(nian,yue,1).getDay(); //獲取當(dāng)前月第一天 是 周幾
for(var i=0;i<setZhou ;i++){//渲染空白 與 星期 對應(yīng)上
var li=document.createElement('li');
document.getElementById('date').appendChild(li);
}
for(var i=1;i<=setTian;i++){//利用獲取到的當(dāng)月最后一天 把 前邊的 天數(shù) 都循環(huán) 出來
var li=document.createElement('li');
li.innerText = i;
if(nian == nianD && yue == yueD && i == tianD){
li.className = "active";
}else{
li.className = "hover";
}
document.getElementById('date').appendChild(li);
}
}
document.getElementById("next").onclick = function(){
dat.setMonth(dat.getMonth() + 1); //當(dāng)點(diǎn)擊下一個(gè)月時(shí) 對當(dāng)前月進(jìn)行加1;
add(); //重新執(zhí)行渲染 獲取去 改變后的 年月日 進(jìn)行渲染;
};
document.getElementById("prev").onclick = function(){
dat.setMonth(dat.getMonth() - 1); //與下一月 同理
add();
};
</script>
</body>
</html>
以上這篇js原生日歷的實(shí)例(推薦)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
IE 下Enter提交表單存在重復(fù)提交問題的解決方法
這篇文章主要介紹了IE 下Enter提交表單存在重復(fù)提交問題的解決方法,需要的朋友可以參考下2014-05-05
javascript實(shí)現(xiàn)密碼強(qiáng)度顯示
這篇文章主要介紹了使用javascript實(shí)現(xiàn)密碼強(qiáng)度顯示,十分實(shí)用的功能,從個(gè)人項(xiàng)目中移植出來的,分享給大家,希望大家能夠喜歡。2015-03-03
懶就要懶到底——鼠標(biāo)自動(dòng)點(diǎn)擊(含時(shí)間判斷)
懶就要懶到底——鼠標(biāo)自動(dòng)點(diǎn)擊(含時(shí)間判斷)...2007-02-02
js中點(diǎn)擊空白區(qū)域時(shí)文本框與隱藏層的顯示與影藏問題
文本框獲得焦點(diǎn)的時(shí)在文本框的下方顯示一個(gè)浮動(dòng)層,點(diǎn)擊文本框隱藏浮動(dòng)層,下面為大家介紹下鼠標(biāo)點(diǎn)擊時(shí)文本框與隱藏層處理問題,感興趣的朋友可以參考下2013-08-08

