JS實現簡單日曆

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <!--CSS樣式-->
        <style type="text/css">
            *{margin: 0px;padding: 0px;}
            #div{width: 400px;height: 300px;border: 1px solid red;margin: auto;}
            #div div:nth-child(1){display: flex;align-items: center;justify-content: center;}
            #tbcal{border-collapse: collapse;width: 100%;text-align: center;}
            #tbcal tr td{border: 1px solid red;}
        </style>
        <script type="text/javascript">
//            顯示日曆
        </script>
    </head>
    <body>
        <div id="div">
            <!--定義年月菜單-->
            <div>
                <select id="selyear">
                    <option selected>2020</option>
                </select>&nbsp;年&nbsp;
                <select id="selmonth">
                    <option selected>1</option>
                    <option selected>2</option>
                    <option selected>3</option>
                    <option selected>4</option>
                    <option selected>5</option>
                    <option selected>6</option>
                    <option selected>7</option>
                    <option selected>8</option>
                </select>&nbsp;月&nbsp;
            </div>
            <div>
                <!--定義列表-->
                <table id="tbcal">
                    <tr>
                        <td>週日</td>
                        <td>週一</td>
                        <td>週二</td>
                        <td>週三</td>
                        <td>週四</td>
                        <td>週五</td>
                        <td>週六</td>
                    </tr>
                </table>
            </div>
        </div>
    </body>
</html>
<script type="text/javascript">
show();
document.getElementById("selmonth").onchange = show;
function show(){
//	獲取鼠標點擊所選擇的年月值
	var year=parseInt(document.getElementById("selyear").value);
	var month=parseInt(document.getElementById("selmonth").value);
//	判斷是否爲閏年,以便確定2月的天數
	var flag=year%4==0&&year%100!=0||year%400==0;
	var dayofmonth=[31,flag?29:28,31,30,31,30,31,31,30,31,30,31];
//	給date賦值,值爲所選擇的某年某月一號
	var dt=new Date();
	dt.setFullYear(year);
	dt.setMonth(month-1);
	dt.setDate(1);
//	獲取date對應周幾
	var week=dt.getDay();
//	當月應該打印多少行
	var rows=Math.ceil((dayofmonth[dt.getMonth()]+week)/7);
	console.log(rows);
	var k=0;
//	如果表格中有除表頭外的數據,進行數據刪除,避免上次月份的數據對下次有影響
	var table=document.getElementById("tbcal");
	while(table.rows.length>1){
		table.deleteRow(1);
	}
//	循環向表格中添加數據,生成日曆
	for(var i=0;i<rows;i++){
		var row=table.insertRow(i+1);
		for(var j=0;j<7;j++){
			var cell=row.insertCell(j);
			k++;
			if(k<=week || k>dayofmonth[dt.getMonth()]+week){
				cell.innerHTML="";
			}
			else{
				cell.innerHTML=k-week;
			}
		}
	}
}

</script>

 

發佈了49 篇原創文章 · 獲贊 19 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章