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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值