最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

javascript實(shí)現(xiàn)日歷控件(年月日關(guān)閉按鈕)_javascript技巧

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 21:05:51
文檔

javascript實(shí)現(xiàn)日歷控件(年月日關(guān)閉按鈕)_javascript技巧

javascript實(shí)現(xiàn)日歷控件(年月日關(guān)閉按鈕)_javascript技巧:經(jīng)常使用google的朋友一定對google絢麗的日歷控件記憶猶新吧,那我們也來實(shí)現(xiàn)一個,雖然功能和效果比不上,但重要的是實(shí)現(xiàn)的過程. 下面是要實(shí)現(xiàn)的html結(jié)構(gòu): 年:月: 先說一下日歷查詢的算法: w=y+parseInt(y/4)+parseInt(c/4)-2*c+parseI
推薦度:
導(dǎo)讀javascript實(shí)現(xiàn)日歷控件(年月日關(guān)閉按鈕)_javascript技巧:經(jīng)常使用google的朋友一定對google絢麗的日歷控件記憶猶新吧,那我們也來實(shí)現(xiàn)一個,雖然功能和效果比不上,但重要的是實(shí)現(xiàn)的過程. 下面是要實(shí)現(xiàn)的html結(jié)構(gòu): 年:月: 先說一下日歷查詢的算法: w=y+parseInt(y/4)+parseInt(c/4)-2*c+parseI

經(jīng)常使用google的朋友一定對google絢麗的日歷控件記憶猶新吧,那我們也來實(shí)現(xiàn)一個,雖然功能和效果比不上,但重要的是實(shí)現(xiàn)的過程.
下面是要實(shí)現(xiàn)的html結(jié)構(gòu):
年:月:
先說一下日歷查詢的算法:
w=y+parseInt(y/4)+parseInt(c/4)-2*c+parseInt(26*(m+1)/10)+d-1 ;
下面是詳細(xì)的說明過程,有興趣的可以去看下:
http://www.gxlcms.com/article/32572.htm
以下是實(shí)現(xiàn)的javascript代碼:
代碼如下:
sx.activex.calender={
bind:function(target){
var a=document.createElement("div");
var head=document.createElement("div");
var biaoti=document.createElement("div");
var select=document.createElement("select");
var yface=document.createElement("span");
var mface=document.createElement("span");
var body=document.createElement("div");
var select1=document.createElement("select");
yface.appendChild(select);
mface.appendChild(select1);
head.appendChild(yface);
head.appendChild(mface);
a.appendChild(head);
a.appendChild(biaoti);
a.appendChild(body);
yface.insertBefore(document.createTextNode("年 "),yface.firstChild)
mface.insertBefore(document.createTextNode("月 "),mface.firstChild)
a.style.position="absolute";
biaoti.style.height="10%";
for(var i=0;i<7;i++){
var can=document.createElement("span")
can.style.width="14%";
can.style.height="100%";
can.style.textAlign="center";
biaoti.appendChild(can);
}
biaoti.all[0].innerText="日"
biaoti.all[1].innerText="一"
biaoti.all[2].innerText="二"
biaoti.all[3].innerText="三"
biaoti.all[4].innerText="四"
biaoti.all[5].innerText="五"
biaoti.all[6].innerText="六"
head.style.height="20%";
a.style.position="absolute";
a.style.height="200px";
a.style.width="302px";
a.style.border="1px red solid";
yface.style.width="50%";
yface.style.padding="5px";
yface.style.height="100%";
select.style.width="80%";
for(var i=1960;i<2010;i++){
var option=document.createElement("option");
option.text=i;
select.add(option);
}
mface.style.width="50%";
mface.style.padding="5px";
mface.style.height="100%";
select1.style.width="80%";
for(var i=1;i<=12;i++){
var option=document.createElement("option");
option.text=i;
select1.add(option);
}
body.style.height="70%";
for(var i=0;i<42;i++){
var span=document.createElement("span");
span.style.width="14%";
span.style.height="16%";
span.style.textAlign="center";
span.onmouseover=function(){
this.style.cursor="hand";
this.tempcolor=this.style.backgroundColor;
this.style.backgroundColor="lightblue";
}
span.onmouseout=function(){
this.style.backgroundColor=this.tempcolor;
}
span.onclick=function(){
target.value=select.options[select.selectedIndex].text+"年"+select1.options[select1.selectedIndex].text+"月"+this.innerText+"日";
a.parentNode.removeChild(a);
}
body.appendChild(span);
}
select.onchange=function(){
for(var o in body.all){
body.all[o].innerText="";
if(o.toString()!="length")
body.all[o].style.backgroundColor="";
}
var year1=this.options[this.selectedIndex].text;
var month1=select1.options[select1.selectedIndex].text;
var y=parseInt(year1.substr(2,2)-0);
var c=parseInt(year1.substr(0,2));;
var m=parseInt(month1);;
m=m>=3?m:(y=y-1,m+12);
var d=1;
var w=y+parseInt(y/4)+parseInt(c/4)-2*c+parseInt(26*(m+1)/10)+d-1 ;
if(w<0) w=w+700;
w=w%7;
switch(parseInt(month1)){
case 2:
if(parseInt(year1)%4==0)
var r=29;
else
var r=28;
var day=w;
for(var d=1;d<=r;d++){
body.all[day++].innerText=d;
if(parseInt(year1)==(new Date()).getYear() && parseInt(month1)==(new Date()).getMonth()+1 && d==(new Date()).getDate())
body.all[day-1].style.backgroundColor="red";
body.all[41].innerText="關(guān)閉";
}
break;
default:

if(parseInt(month1)==1 || parseInt(month1)==3 || parseInt(month1)==5 || parseInt(month1)==7 || parseInt(month1)==8 || parseInt(month1)==10 || parseInt(month1)==12)
var r=31;
else
var r=30;
var day=w;
for(var d=1;d<=r;d++){
body.all[day++].innerText=d;
if(parseInt(year1)==(new Date()).getYear() && parseInt(month1)==(new Date()).getMonth()+1 && d==(new Date()).getDate())
body.all[day-1].style.backgroundColor="red";
body.all[41].innerText="關(guān)閉";
}
break;


}

}
select1.onchange=function(){
for(var o in body.all){
body.all[o].innerText="";
if(o.toString()!="length")
body.all[o].style.backgroundColor="";
}
var month1=this.options[this.selectedIndex].text;
var year1=select.options[select.selectedIndex].text;
var y=parseInt(year1.substr(2,2)-0);
var c=parseInt(year1.substr(0,2));
var m=parseInt(month1);
m=m>=3?m:(y=y-1,m+12);
var d=1;
var w=y+parseInt(y/4)+parseInt(c/4)-2*c+parseInt(26*(m+1)/10)+d-1 ;
if(w<0) w=w+700;
w=w%7;
switch(parseInt(month1)){
case 2:
if(parseInt(year1)%4==0)
var r=29;
else
var r=28;
var day=w;
for(var d=1;d<=r;d++){
body.all[day++].innerText=d;
if(parseInt(year1)==(new Date()).getYear() && parseInt(month1)==(new Date()).getMonth()+1 && d==(new Date()).getDate())
body.all[day-1].style.backgroundColor="red";
body.all[41].innerText="關(guān)閉";
}
break;
default:

if(parseInt(month1)==1 || parseInt(month1)==3 || parseInt(month1)==5 || parseInt(month1)==7 || parseInt(month1)==8 || parseInt(month1)==10 || parseInt(month1)==12)
var r=31;
else
var r=30;
var day=w;
for(var d=1;d<=r;d++){
body.all[day++].innerText=d;
if(parseInt(year1)==(new Date()).getYear() && parseInt(month1)==(new Date()).getMonth()+1 && d==(new Date()).getDate())
body.all[day-1].style.backgroundColor="red";
body.all[41].innerText="關(guān)閉";
}
break;


}

}
var date=new Date();

for(var s1=0;s1if(parseInt(select.options[s1].text)==parseInt(date.getYear())){
select.options[s1].selected=true;
break;
}
}
for(var s2=0;s2if(parseInt(select1.options[s2].text)==parseInt(date.getMonth())+1){
select1.options[s2].selected=true;
break;
}
}
select.onchange();
for(var i in body.all){
if(body.all[i].innerText==date.getDate()){
body.all[i].style.backgroundColor="red";
}
}
target.onfocus=function(){
document.body.appendChild(a);
a.style.left=target.offsetLeft+"px";;
a.style.top=target.offsetTop+target.offsetHeight+"px";
}
target.onblur=function(){
if(a && window.event.clientY>a.offsetTop && window.event.clientYa.offsetLeft && window.event.clientXreturn;
if(!a) return;
a.parentNode.removeChild(a);
}
body.all[41].innerText="關(guān)閉";
body.all[41].onclick=function(){
this.style.backgroundColor="";
a.parentNode.removeChild(a);

}
}
}

入口參數(shù)是要綁定的html對象,這里一般是text input.
下面是調(diào)用代碼:


Untitled Document


聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

javascript實(shí)現(xiàn)日歷控件(年月日關(guān)閉按鈕)_javascript技巧

javascript實(shí)現(xiàn)日歷控件(年月日關(guān)閉按鈕)_javascript技巧:經(jīng)常使用google的朋友一定對google絢麗的日歷控件記憶猶新吧,那我們也來實(shí)現(xiàn)一個,雖然功能和效果比不上,但重要的是實(shí)現(xiàn)的過程. 下面是要實(shí)現(xiàn)的html結(jié)構(gòu): 年:月: 先說一下日歷查詢的算法: w=y+parseInt(y/4)+parseInt(c/4)-2*c+parseI
推薦度:
標(biāo)簽: 日歷 js 年月日
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top