純JS實(shí)現(xiàn)簡(jiǎn)單的日歷
本文實(shí)例為大家分享了純JS實(shí)現(xiàn)日歷的具體代碼,供大家參考,具體內(nèi)容如下
封裝代碼:
(function(cmf){
cmf.showDcalendar=function(){
var fnname=cmf.fn
var id="cmfrili2"
var yy=f23timeselecta1.value,mm=f23timeselecta2.value-1
var newdara=new Date()
var dd=newdara.getDate();
var d=new Date(yy,mm,1),t
if(mm==0){mm=12;yy--}
var a,b,c,d2
t='<table width=100% onselectstart="return false"><tr align=center>'
var ds='<font color=#ff0000>日</font>,一,二,三,四,五,<font color="#009900">六</font>'.split(",")
for(x=0;x<7;x++)t+='<td><b>'+ds[x]+'</b></td>'
t+='</tr><tr>'
//計(jì)算顯示上個(gè)月有幾號(hào)在日歷上
a=d.getDay()
if(a==0)a=7
r=[]
var c2=0
for(var x=0;x<a;x++)
{
d2=new Date(d-24*3600*1000*(a-x))
r[r.length]="1"+d2.getDate()
c2++
}
//計(jì)算顯示這個(gè)月有幾號(hào)在日歷上
mm++
if(mm==13){mm=1;yy++}
c=cmf.getMonthM(yy,mm)//計(jì)算哪年哪月 有多少天
d=new Date(yy,mm,1)
for(var x=1;x<=c;x++)r[r.length]="2"+x
//計(jì)算顯示下個(gè)月有幾號(hào)在日歷上
c2+=c//r數(shù)組有多少個(gè)
d2=new Date(yy,mm-1,c)
a=d2.getDay()//這個(gè)月最后一天星期幾
a=7-a
if(c2<36)a+=7
for(var x=1;x<a;x++)
{
r[r.length]="3"+x
}
var yy1=yy.toString()
var mm1=mm.toString()
for(var x=0;x<r.length;x++)
{
if(x%7==0)t+='<tr align=center>'
t+='<td height=25 onclick="'+fnname+'('+yy1+mm1+r[x].toString().substring(1)+',this)" onmouseover=this.bgColor="#33eeff" onmouseout=this.bgColor=""'
if(r[x]=="2"+dd)t+=' style="border:1px solid #aa0000"'
t+='>'
var cl=""
if(r[x].charAt(0)!=2)cl='999999'
else if(x%7==0)cl='ff0000'
else if(x%7==6)cl='009900'
if(cl!="")t+='<font color="#'+cl+'">'
t+=r[x].substring(1)
if(cl!="")t+='</font>'
t+='</td>'
if(x%7==6)t+='</tr>'
}
t+='</table>'
document.getElementById(id).innerHTML=t
}
cmf.getMonthM=function(y,m){//計(jì)算哪年哪月 有多少天 月份從1開始
if(m==4 || m==6 || m==9 || m==11)return 30
if(m==2)return (y%4==0 && y%100!=0)|| y%400==0?29:28
return 31
}
cmf.showd=function(id,fn){
cmf.fn=fn
var g='<div id="cmfrili1"></div><div id="cmfrili2"></div>'
var newdara=new Date()
var yy=newdara.getFullYear();
var mm=newdara.getMonth()+1;
document.getElementById(id).innerHTML=g
var s='border-width:1px;border-style:solid;border-color:#000000 #cccccc #cccccc #000000;width: 44px;'
var t=''
+'<table bgcolor="#ffffff" width=100% cellpadding=0 cellspacing=0><tr align=center><td height=44>'
+cmf.timeselect_ms(1,'<input type=text value="'+yy+'" id="f23timeselecta1" onchange="cmf.showDcalendar()" style="width:44;text-align:center;'+s+'">年')
+'</td><td>'
+cmf.timeselect_ms(2,'<input type=text value="'+mm+'" id="f23timeselecta2" onchange="cmf.showDcalendar()" style="width:22;text-align:center;'+s+'">月')
+'</td>'
document.getElementById("cmfrili1").innerHTML=t
cmf.showDcalendar()
}
cmf.timeselect_ms=function(n,m,n2)
{
var t='<table cellpadding=0 cellspacing=0 height=20><tr align=center>'
t+='<td onmouseup="cmf.timeselect_up('+n+',2)" onselectstart="return false" style="font-size:16px;cursor:pointer;"><b>◄</b></td>'
if(m!=null)t+='<td>'+m+'</td>'
t+='<td onmouseup="cmf.timeselect_up('+n+',1)" onselectstart="return false" style="font-size:16px;cursor:pointer;"><b>►</b></td>'
if(n2!=null)t+='<td>'+n2+'</td>'
t+='</tr></table>'
return t
}
cmf.timeselect_up=function(n,m){
var o=document.getElementById("f23timeselecta"+n),c=o.value
if(c=="")c=1
if(n==1)//年
{
if(m==2){//減
c--
}else if(m==1){//加
c++
}
}
else
{
if(m==2){//減
if(c<2) return
c--
}else if(m==1){//加
if(c==12) return
c++
}
}
o.value=c
if(m==1 || m==2)cmf.showDcalendar()
}
})(window.cmf={})
使用:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>日歷</title>
<script src="Dcalendar.js" type="text/javascript" charset="utf-8"></script>
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
</head>
<body>
<div id="ri" style="width: 400px;">
</div>
</body>
<script type="text/javascript">
cmf.showd('ri','dianji')
function dianji(d,ti){
$("#ri td").css('border','')
$(ti).css('border','1px solid #aa0000')
alert(d)
}
</script>
</html>
使用代碼中dianji()函數(shù)是用戶點(diǎn)擊某天彈出某天的日期;效果如下

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JS生成某個(gè)范圍的隨機(jī)數(shù)【四種情況詳解】
下面小編就為大家?guī)?lái)一篇JS生成某個(gè)范圍的隨機(jī)數(shù)【四種情況詳解】。小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧2016-04-04
使用JavaScript將富文本HTML轉(zhuǎn)換為純文本的三種方法
在Web開發(fā)中,我們經(jīng)常需要處理HTML內(nèi)容,但有時(shí)為了特定的目的,比如文本處理、搜索或顯示在非HTML環(huán)境中,我們可能希望將富文本HTML轉(zhuǎn)換為純文本,這里,我們將探討如何使用JavaScript來(lái)實(shí)現(xiàn)這一功能,需要的朋友可以參考下2024-05-05
JavaScript實(shí)現(xiàn)動(dòng)態(tài)表格效果
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)動(dòng)態(tài)表格效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-06-06
淺談一個(gè)webpack構(gòu)建速度優(yōu)化誤區(qū)
這篇文章主要介紹了淺談一個(gè)webpack構(gòu)建速度優(yōu)化誤區(qū),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
原生javascript實(shí)現(xiàn)自動(dòng)更新的時(shí)間日期
這篇文章主要介紹了原生javascript實(shí)現(xiàn)自動(dòng)更新的時(shí)間日期的相關(guān)資料,對(duì)實(shí)現(xiàn)代碼進(jìn)行詳細(xì)分析,感興趣的朋友可以參考一下2016-02-02
簡(jiǎn)單介紹JavaScript數(shù)據(jù)類型之隱式類型轉(zhuǎn)換
這篇文章主要介紹了簡(jiǎn)單介紹JavaScript數(shù)據(jù)類型之隱式類型轉(zhuǎn)換的相關(guān)資料,需要的朋友可以參考下2015-12-12
盤點(diǎn)javascript 正則表達(dá)式中 中括號(hào)的【坑】
下面小編就為大家?guī)?lái)一篇盤點(diǎn)javascript 正則表達(dá)式中 中括號(hào)的【坑】。小編覺得總結(jié)的不錯(cuò)?,F(xiàn)在分享給大家,希望能給大家一個(gè)參考2016-03-03
微信小程序上傳帖子的實(shí)例代碼(含有文字圖片的微信驗(yàn)證)
這篇文章主要介紹了小程序上傳帖子(含有文字圖片的微信驗(yàn)證)的實(shí)例代碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07

