프로그램은 다음과 같습니다. 먼저 사용자가 입력한 연도와 월을 수집하고, 계산을 통해 해당 월의 최대 일수를 구하고, 해당 월의 첫 번째 날이 요일인지 구합니다. 그런 다음 해당 달의 구체적인 정보를 표에 입력하세요.
]<script>
function getMonthJuZhen(date){
if(arguments.length == 0){
throw new Error("need a date");
}
if(arguments[0] == null){
throw new Error("date is null or undefined");
}
if(arguments[0] instanceof Date){
var monthjuzhen = new Array(5);
for(var r = 0 ; r < 5 ; r++){
monthjuzhen[r] = [0,0,0,0,0,0,0];
}
var maxDay = getMaxDay(arguments[0]);
arguments[0].setDate(1);
var r = 0;
var c = arguments[0].getDay();
for(var d = 1 ; d <= maxDay ; d++){
monthjuzhen[r][c] = d;
if(c == 6){
if(r == 4){
r = 0;
}
else{
r++;
}
c = 0;
}
else{
c++;
}
}
return monthjuzhen;
}
else{
throw new Error("need a date");
}
}
function getMaxDay(date){
if(arguments.length == 0){
throw new Error("need a date");
}
if(arguments[0] == null){
throw new Error("date is null or undefined");
}
if(arguments[0] instanceof Date){
var tempDate = new Date(arguments[0].toString());
if(arguments[0].getMonth() == 11){
tempDate.setFullYear((tempDate.getFullYear()+1));
tempDate.setMonth(0);
}
else{
tempDate.setMonth((tempDate.getMonth()+1));
}
return Math.floor((tempDate.getTime()-arguments[0].getTime())/(1000*60*60*24));
}
else{
throw new Error("need a date");
}
}
function updateDate(){
var yearInput = document.getElementById("yearinput");
var monthInput = document.getElementById("monthinput");
try{
var year = parseInt(yearInput.value);
var month = parseInt(monthInput.value);
if(isNaN(year)){
if(isNaN(month)){
monthInput.value = "";
}
yearInput.value = "";
return;
}
if(isNaN(month)){
monthInput.value = "";
return;
}
if(month > 12 || month < 1){
monthInput.value = "";
return;
}
month--;
var date = new Date(year,month);
var monthjuzhen = getMonthJuZhen(date);
var day;
var dayvalue;
for(var r in monthjuzhen){
for(var c in monthjuzhen[parseInt(r)]){
day = document.getElementById(r+"-"+c);
dayvalue = monthjuzhen[parseInt(r)][parseInt(c)];
if(dayvalue == 0){
if(day.hasChildNodes()){
day.removeChild(day.firstChild);
}
day.onmouseover = null;
day.onmouseout = null;
day.onclick = null;
continue;
}
if(day.hasChildNodes()){
day.firstChild.nodeValue = dayvalue;
}
else{
day.appendChild(document.createTextNode(dayvalue));
}
day.setAttribute("date",year+"-"+month+"-"+dayvalue);
day.onmouseover = function(){this.style.backgroundColor = "black";this.style.color = "white";};
day.onmouseout = function(){this.style.backgroundColor = "white";this.style.color = "black"};
day.onclick = subDate;
}
}
}
catch(e){
alert(e);
}
}
function subDate(){
var date = this.getAttribute("date").match(/(\d+)-(\d+)-(\d+)/);
alert(new Date(date[1],date[2],date[3]));
}
</script>