SoFunction
Updated on 2025-04-11

JavaScript calendar implementation code


var Calendar = function(){
var self = this;

= ("div");
= ("div");
;
= ("div");
;
= ("div");
;

= {
"now" : new Date(),
"getDate" : function(d){
d = d || ["now"];
return () + "-" + (()+1) + "-" + ();
},
"getTime" : function(d){
d = d || ["now"];
return () + ":" + () + ":" + ();
},
"getSelectTime" : function(d){
d = d || ["now"];
return () + "-" + (()+1) + "-" + +
" " + () + ":" + () + ":" + ();
},
"getDaysCount" : function(d){
d = d || ["now"];
return (new Date((),()+1,0)).getDate();
},
"weekOfFirstDay" : function(d){
d = d || ["now"];
return (new Date((),(),1)).getDay();
}
};
= ["now"].getDate();

();
};
= {
init : function(){
();
},
initDom : function(){
var self = this;
//head
var o = {"preYear":"<<","preMonth":"<","date":["getDate"](),"nextMonth":">","nextYear":">>"};
for(var i in o){
var __ = o[i], tag = ("span");
= __.toString();
i!="date" && ( = (function(fn){
return function(){(self);}
})(self[i])
);
i=="date" && ( = "dateShow", = tag);

(tag);
}
= "cal-head";

//body
();
= "cal-body";

//foot
= ("span");

var dInfo = ;
var Valid = function(num,max){
num = /^\d+$/.test(num) ? num : -1;
if(num<0 || num>max){
return false;
}
return true;
};

var times = {"hour":["getHours","setHours"],"minutes":["getMinutes","setMinutes"],"seconds":["getSeconds","setSeconds"]};
for(var i in times){
var t = ("span");
var tInput = ("input");
= = dInfo["now"][times[i][0]]();

= "none";
= (function(tIpt){
return function(){
= "none";
= "inline-block";
();
}
})(tInput);
= (function(t,setFn){
return function(){
= "none";
if(Valid(,(setFn=="setHours"?23:59))){
= ;
dInfo["now"][setFn](parseInt());
}
= "inline-block";
}
})(t,times[i][1]);

(t);
(tInput);

if(i!="seconds"){
var sp = ("span");
= ":";
(sp);
}
}
= "timeShow";

var okBtn = ("span");
= "Ok";
= "okBtn";
= function(){
alert(dInfo["getSelectTime"]());
};

();
(okBtn);
= "cal-foot";

//relation
();
();
();

= "cal-box";
();
},
buildBody : function(){
var self = this,dInfo = , week = dInfo["weekOfFirstDay"](),days = dInfo["getDaysCount"](),day = dInfo["now"].getDate();
var cDay = function(inner,ev){
var tag = ("span");
= inner;

ev && ( = function(){
= (" selectDay","");
= this;
= + " selectDay";

= inner;
});

return tag;
};
var domPgm = ();
//weedInfo
var weeks = ["day","one","two","three","four","five","six"];
for(var i=0;i<;i++){
(cDay(weeks[i]));
}

//Last month's whitening
for(var i=0;i<week;i++){
(cDay(""));
}
//This month's information
parseInt() > days && ( = days);
for(var i=1;i<=days;i++){
var tag = cDay(i,true);
== i && ( = tag,=" selectDay");
i===day && (=+" nowDay");
(tag);
}
//Filling for next month...

= "";
(domPgm);

},
dateShow : function(){
= ["getDate"]();
},
updateUI : function(){
();
();
},
preYear : function(){
["now"].setYear(["now"].getFullYear()-1);
();
},
preMonth : function(){
var dInfo = ,m = dInfo["now"].getMonth();
--m;
m<0 && (m = 11,dInfo["now"].setYear(["now"].getFullYear()-1));
dInfo["now"].setMonth(m);
();
},
nextMonth : function(){
var dInfo = ,m = dInfo["now"].getMonth();
++m;
m>11 && (m = 0,dInfo["now"].setYear(["now"].getFullYear()+1));
dInfo["now"].setMonth(m);
();
},
nextYear : function(){
["now"].setYear(["now"].getFullYear()+1);
();
}
};