视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
原生js制作日历控件实例分享
2020-11-27 20:25:36 责编:小OO
文档
 本文实例为大家分享了js实现一个简单的日历控件,供大家参考,具体内容如下

效果图:

具体代码:

<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>date</title>
 <style type="text/css">
 *{ margin:0; padding:0;}
 a{ text-decoration:none; outline:none;}
 body a{outline:none;blr:expression(this.onFocus=this.blur());}
 img{ border:none;}
 ul{ list-style:none;}
 body{ color:#666666; font-size:14px; font-family:"微软雅黑"; background-color:#fff; height:100%; overflow-y:scroll;*overflow-y:inherit;}
 /*html{ height:100%;}*/
 .clearfix:after{ content:"."; display:block; height:0; clear:both; overflow:hidden;}
 .clearfix{ zoom:1;}
 
 
 #box{width:350px; position:absolute;}
 #title{width:350px; height:50px;}
 #month{ float:left;width:60px; height:50px;text-align:center;cursor:pointer;line-height:50px;}
 #year{float:left;width:80px; height:50px;text-align:center;cursor:pointer;line-height:50px;}
 #week{ width:350px;height:50px;}
 #week div{ float:left; width:48px; height:48px; margin:1px; background:#C90; color:#fff; text-align:center; line-height:48px; cursor:pointer;}
 #con{ width:350px;}
 #con div{ float:left; width:48px; height:48px; margin:1px; background:#CCC; color:#333; text-align:center; line-height:48px; cursor:pointer;}
 #con .edate{background:#999;}
 #con .edate:hover{background:#09F; color:#fff;}
 #con div.now{background:#09F; color:#fff;}
 
 #prevmonth,#nextmonth,#prevyear,#nextyear{float:left;width:50px; height:50px;text-align:center;cursor:pointer;line-height:50px;}
 
 #btns{width:350px; height:40px;}
 #nowtime{ float:left; margin:5px; height:30px; line-height:30px; padding:0 5px; background:#09F; cursor:pointer; border-radius:5px;}
 #nowtime:hover{background:#ddd;}
 #cleartime{float:left; margin:5px; height:30px; line-height:30px; padding:0 5px; background:#09F; cursor:pointer; border-radius:5px;}
 </style>
</head>
<body>
 <p style=" margin:100px;">选择日期:<input type="text" id="date" value="" style="height:40px; line-height:40px;"/></p>
 
 
</body>
<script type="text/javascript">
window.onload=function(){ 
 
 
 
 //创建日历控件基本结构 
 var obody=document.body;
 createbox();
 function createbox(){
 
 var ddbox=document.createElement("div");
 ddbox.id="box";
 ddbox.style.display="none";
 var str="";
 str+='<div id="title"><div id="prevyear"><<</div><div id="prevmonth"><</div><div id="month"></div><div id="year"></div><div id="nextmonth">></div><div id="nextyear">>></div></div>';
 str+='<div id="week"><div>日</div><div>一</div><div>二</div><div>三</div><div>四</div><div>五</div><div>六</div></div>';
 str+='<div id="con" class="clearfix"></div>';
 str+='<div id="btns"><div id="nowtime">当前时间</div><div id="cleartime">清空</div></div>';
 ddbox.innerHTML=str;
 obody.appendChild(ddbox); 
 };
 //===================get ele=============================== 
 var omonth=document.getElementById("month");
 var oyear=document.getElementById("year");
 var con=document.getElementById("con");
 var prevmonth=document.getElementById("prevmonth");
 var nextmonth=document.getElementById("nextmonth");
 var prevyear=document.getElementById("prevyear");
 var nextyear=document.getElementById("nextyear");
 var nowtime=document.getElementById("nowtime");
 var date=document.getElementById("date");
 var box=document.getElementById("box");
 var cleartime=document.getElementById("cleartime");
 //===================show date===============================
 date.onfocus=function(){//显示控件
 var datel=this.getBoundingClientRect().left;
 var datet=this.getBoundingClientRect().top+40;
 box.style.left=datel+"px";
 box.style.top=datet+"px";
 box.style.display="block";
 }; 
 con.onclick=function(event){
 if(event.target.tagName=="DIV" && event.target.nodeType=="1" && hasclass(event.target.className,"edate")){
 date.value="";
 date.value=dateObj.getFullYear()+"-"+toyear(dateObj)+"-"+event.target.innerHTML;
 box.style.display="none";
 };
 };
 cleartime.onclick=function(event){
 date.value="";
 };
 //===================set year month===============================
 //默认时间对象
 var dateObj = new Date();
 //动态控制
 prevmonth.onclick=function(){//上一月
 var ddm=null;
 var ddy=null;
 if((dateObj.getMonth()-1)==-1){
 ddm=11;
 ddy=dateObj.getFullYear()-1;
 }else{
 ddm=dateObj.getMonth()-1;
 ddy=dateObj.getFullYear();
 };
 dateObj.setFullYear(ddy);
 dateObj.setMonth(ddm);
 omonth.innerHTML=toyear(dateObj)+"月";
 oyear.innerHTML=dateObj.getFullYear()+"年";
 remove();
 oneweek=oneyearoneday(dateObj);
 alld=alldays(dateObj);
 nowd=nowday(dateObj);
 init(oneweek,alld,nowd);
 };
 nextmonth.onclick=function(){//下一月
 var ddm=null;
 var ddy=null;
 if((dateObj.getMonth()+1)==12){
 ddm=0;
 ddy=dateObj.getFullYear()+1;
 }else{
 ddm=dateObj.getMonth()+1;
 ddy=dateObj.getFullYear();
 };
 dateObj.setFullYear(ddy);
 dateObj.setMonth(ddm);
 omonth.innerHTML=toyear(dateObj)+"月";
 oyear.innerHTML=dateObj.getFullYear()+"年";
 remove();
 oneweek=oneyearoneday(dateObj);
 alld=alldays(dateObj);
 nowd=nowday(dateObj);
 init(oneweek,alld,nowd); 
 };
 prevyear.onclick=function(){//上一年
 var ddy=dateObj.getFullYear()-1;
 dateObj.setFullYear(ddy);
 oyear.innerHTML=dateObj.getFullYear()+"年";
 remove();
 oneweek=oneyearoneday(dateObj);
 alld=alldays(dateObj);
 nowd=nowday(dateObj);
 init(oneweek,alld,nowd);
 };
 nextyear.onclick=function(){//下一年
 var ddy=dateObj.getFullYear()+1;
 dateObj.setFullYear(ddy);
 oyear.innerHTML=dateObj.getFullYear()+"年";
 remove();
 oneweek=oneyearoneday(dateObj);
 alld=alldays(dateObj);
 nowd=nowday(dateObj);
 init(oneweek,alld,nowd); 
 }; 
 //返回到今时今日
 nowtime.onclick=function(){
 var dddate=new Date();
 var ddm=dddate.getMonth();
 var ddy=dddate.getFullYear();
 dateObj.setFullYear(ddy);
 dateObj.setMonth(ddm);
 omonth.innerHTML=toyear(dateObj)+"月";
 oyear.innerHTML=dateObj.getFullYear()+"年";
 remove();
 oneweek=oneyearoneday(dateObj);
 alld=alldays(dateObj);
 nowd=nowday(dateObj);
 init(oneweek,alld,nowd); 
 };
 //年月获取 
 var year=dateObj.getFullYear();
 var month=toyear(dateObj);//0是12月
 //月年的显示
 omonth.innerHTML=month+"月";
 oyear.innerHTML=year+"年";
 //===================set day===============================
 
 //获取本月1号的周值
 var oneweek=oneyearoneday(dateObj);
 //本月总日数
 var alld=alldays(dateObj);
 //当前是几
 var nowd=nowday(dateObj);
 //初始化显示本月信息
 init(oneweek,alld,nowd);
 
 //===================function===============================
 //有无指定类名的判断
 function hasclass(str,cla){
 var i=str.search(cla);
 if(i==-1){
 return false;
 }else{
 return true;
 };
 };
 //初始化日期显示方法
 function remove(){
 con.innerHTML="";
 };
 function init(oneweek,alld,nowd){
 for(var i=1;i<=oneweek;i++){//留空
 var eday=document.createElement("div");
 eday.innerHTML="";
 con.appendChild(eday);
 };
 for(var i=1;i<=alld;i++){//正常区域
 var eday=document.createElement("div");
 if(i==nowd){ 
 eday.innerHTML=i;
 eday.className="now edate";
 con.appendChild(eday);
 }else{
 eday.innerHTML=i;
 eday.className="edate";
 con.appendChild(eday);
 };
 };
 };
 //获取本月1号的周值
 function oneyearoneday(dateObj){
 var oneyear = new Date();
 var year=dateObj.getFullYear();
 var month=dateObj.getMonth();//0是12月
 oneyear.setFullYear(year);
 oneyear.setMonth(month);//0是12月
 oneyear.setDate(1);
 return oneyear.getDay(); 
 };
 //当前是几
 function nowday(dateObj){
 return dateObj.getDate();
 };
 //获取本月总日数方法
 function alldays(dateObj){
 var year=dateObj.getFullYear();
 var month=dateObj.getMonth();
 if(isLeapYear(year)){//闰年
 switch(month) { 
 case 0: return "31"; break; 
 case 1: return "29"; break; //2月
 case 2: return "31"; break; 
 case 3: return "30"; break; 
 case 4: return "31"; break; 
 case 5: return "30"; break; 
 case 6: return "31"; break; 
 case 7: return "31"; break; 
 case 8: return "30"; break; 
 case 9: return "31"; break; 
 case 10: return "30"; break; 
 case 11: return "31"; break; 
 default: 
 };
 }else{//平年
 switch(month) { 
 case 0: return "31"; break; 
 case 1: return "28"; break; //2月 
 case 2: return "31"; break; 
 case 3: return "30"; break; 
 case 4: return "31"; break; 
 case 5: return "30"; break; 
 case 6: return "31"; break; 
 case 7: return "31"; break; 
 case 8: return "30"; break; 
 case 9: return "31"; break; 
 case 10: return "30"; break; 
 case 11: return "31"; break; 
 default: 
 }; 
 };
 };
 //闰年判断函数
 function isLeapYear(year){ 
 if( (year % 4 == 0) && (year % 100 != 0 || year % 400 == 0)){
 return true;
 }else{
 return false;
 }; 
 };
 //月份转化方法
 function toyear(dateObj){ 
 var month=dateObj.getMonth()
 switch(month) { 
 case 0: return "1"; break; 
 case 1: return "2"; break; 
 case 2: return "3"; break; 
 case 3: return "4"; break; 
 case 4: return "5"; break; 
 case 5: return "6"; break; 
 case 6: return "7"; break; 
 case 7: return "8"; break; 
 case 8: return "9"; break; 
 case 9: return "10"; break; 
 case 10: return "11"; break; 
 case 11: return "12"; break; 
 default: 
 }; 
 };
};
</script>
</html>

希望本文所述对大家学习javascript程序设计有所帮助。

更多原生js制作日历控件实例分享相关文章请关注PHP中文网!

下载本文
显示全文
专题