[英]JavaScript Calendar odd behavior
我看到還有其他的JS日歷,但是我想嘗試一下它,看看自己是否能做得到。 我碰到了一點障礙。 看來,當我運行腳本生成本月(八月)的日歷時,我得到的是29天而不是31天。有人可以看出我做錯了什么,請指出正確的方向嗎?
var arrMonth = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec");
var arrWeek = new Array("Su", "M", "Tu", "W", "Th", "F", "Sa");
var now = new Date();
var thisYear = now.getFullYear();
var thisMonth = now.getMonth();
var thisDate = now.getDate();
var thisDay = now.getDay();
var firstMonth = new Date();
var tempYear = firstMonth.setYear(thisYear);
var tempMonth = firstMonth.setMonth(thisMonth);
var tempDate = firstMonth.setDate(1);
var firstDay = firstMonth.getDay();
var totalDays = numberOfDays(thisYear, thisMonth);
var dayCounter = 1;
var strHTML = "";
strHTML += "<table border='1'>";
strHTML += "<tr>";
for(var x=0; x<arrMonth.length; x++){
if(x == thisMonth){
strHTML += "<td colspan='7' align='center'>" + arrMonth[x] + "</td>";
}
}
strHTML += "</tr>";
strHTML += "<tr>";
for(var x=0; x<arrWeek.length; x++){
strHTML += "<td align='center'>" + arrWeek[x] + "</td>";
}
strHTML += "</tr>";
strHTML += "<tr>";
for(var x=0; x<40; x++){
if(x < firstDay){
strHTML += "<td> </td>";
}
else if(x == firstDay){
strHTML += "<td align='center'>" + dayCounter + "</td>";
dayCounter++;
}
else{
if(x <= totalDays){
if((x % 7) == 0){
strHTML += "</tr>";
strHTML += "<tr>";
strHTML += "<td align='center'>" + dayCounter + "</td>";
}
else{
strHTML += "<td align='center'>" + dayCounter + "</td>";
}
dayCounter++;
}
}
}
alert(dayCounter + " : " + totalDays);
strHTML += "</tr>";
strHTML += "</table>";
alert(strHTML);
function numberOfDays(year, month) {
var d = new Date(year, month, 0);
return d.getDate();
}
您將x
用作日歷中單元格數量的計數器,但是將其與月份中的天數進行比較。 也就是說,更改此行:
if(x <= totalDays){
到這個:
if( x < totalDays + firstDay ) {
演示: http : //jsfiddle.net/j9rtm/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.