这里script写在了body后面,如果写在其前面,在加载script时会找不到加载的位置,而导致出现空白页,还有值得注意的地方,就是在输入
年月时,获取到的值是字符型的,所以要经行强转,后面才能正确的经行计算。
// JavaScript Document
var year=0;
do{
year=parseInt(prompt(“请输入年份:”));
}while( year<1900);
var month=0;
do{
//前面不管你是怎么定义的,在输入的时候还是会,变成字符型的,所以要进行强转
month=parseInt(prompt(“请输入月份:”));
}while( month<1||month>12);
//求出总天数
var sum=getTotalDays( year, month);
var weekDay=sum%7;
document.write(“
“+”星期天 星期一 星期二 星期三 星期四 星期五 星期六 “+”
“);
//2. 根据 weekDay输出空格, 注意: 输出空格后,不能换行
for( var i=0;i
document.write(” “);
}
// 3. 输出从1到这个月的最后一天(在此之前,必须先求出 year年的month月有多少天).
//求出year,month月有多少天
var days=getDays( year, month);
for( var i=1;i<=days;i++){
if(i<10){document.write(” “);}
if( isCurrentDay( year, month, i) ){
document.write( “”+i+” “);
}else{
document.write(“”+i+” “);
}
//3.1 当前的号数+weekDay %7 ==0 => 加入换行,否则不换
if( (i+weekDay)%7==0){
document.write(”
“);
}
}
document.write(”
“);
//判断是否为当前这个一天…
function isCurrentDay(year,month,i){
//取出系统的当前时间
rightNow = new Date();
//System.out.println( rightNow);
//再从这个时间取出 年, 月,日
var y=rightNow.getFullYear(); // Calendar.YEAR 表示你要取的是年的值
var m=rightNow.getMonth() +1; // Calendar.MONTH表示要取的是月份的值,但月份从0开始算的. 所以要加1
var d= rightNow.getDate();
//System.out.println( y + ” “+ m +” “+ d );
//再比较是否等于 year, month, i
if( year==y && month==m && i==d ){
return true;
}else{
return false;
}
}
//求出year年month月的一号距 1900.1.1有多少天
function getTotalDays( year, month){
//累计天数
var sum=0;
//1. 求出1900到 year-1那一年的总天数
for( var i=1900;i
if( isRun( i ) ){
sum+=366;
}else{
sum+=365;
}
}
//2. 求出 1到month-1 月的天数
for( var i=1;i
sum+=getDays( year, i );
}
// 3. 再多加一个1 ( 1号)
sum=sum+1;
return sum;
}
//求出闰平年: 闰年就返回true, 平年就返回false
function isRun( year ){
if (year % 4 == 0 && !(year % 100 == 0) || year % 400 == 0) { // 判断是否为闰年
return true;
} else {
return false;// 平年
}
}
function getDays( year, month){
//求出month月有多少天,但注意,如是2月,要判断闰平年
//返回值是一个数字.
var days=0;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 2:
if ( isRun( year) ) {
days = 29;
} else {
days = 28;
}
break;
default:
days = 30;
break;
}
return days;
}