在页面中添加两个 <select> 标签,用来显示年份和月份;同时添加两个 <ul> 标签,一个用来显示星期,另一个用来显示日期 在 JavaScript 脚本中动态添加年份和月份,获取当前日期的年份
查看本章节
查看作业目录
需求说明:
使用 JavaScript 中的 Date 对象,在页面上显示一个万年历。选择不同的年份和月份,在页面中显示当前月的日历

实现思路:
- 在页面中添加两个 <select> 标签,用来显示年份和月份;同时添加两个 <ul> 标签,一个用来显示星期,另一个用来显示日期
- 在 JavaScript 脚本中动态添加年份和月份,获取当前日期的年份和月份,显示到 <select> 标签上
- 根据 <select> 标签上显示的 value 值,获取当前选中年月的第一天是星期几,并绘制空 <li> 标签
- 获取当前选中的年月一共有多少天,并绘制对应的 <li> 标签
- 为两个 <select> 标签设置 onchange 事件
实现代码:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style type="text/css">
			*{
				margin: 0;
				padding: 0;
				list-style: none;
			}
			#calender{
				width: 700px;
				background-color: lightgray;
				margin: 20px auto;
			}
			#month_year{
				width: 700px;
				height: 50px;
				line-height: 50px;
				text-align: center;
			}
			ul li{
				float: left;
				width: 100px;
				height: 50px;
				text-align: center;
				line-height: 50px;
			}
		</style>
	</head>
	<body>
		<div id="calender">
			<div id="month_year">
				<select id="year"></select>年
				<select id="month"></select>月
			</div>
			<ul id="title">
				<li>星期天</li>
				<li>星期一</li>
				<li>星期二</li>
				<li>星期三</li>
				<li>星期四</li>
				<li>星期五</li>
				<li>星期六</li>
			</ul>
			<ul id="dateul"></ul>
		</div>
		<script type="text/javascript">
			var yearSelect=document.getElementById("year");
			var monthSelect=document.getElementById("month");
			var dateul=document.getElementById("dateul");
			function init(){
				for (var year=1990;year<3000;year++) {
					createOption(year,year,yearSelect);
				}
				for (var month=1;month<13;month++) {
					createOption(month,month-1,monthSelect);
				}
				var now=new Date();
				console.log(Date)
				showSelect(now.getFullYear(),now.getMonth());
				showDates();
				yearSelect.onchange=function(){
					showDates();
				}
				monthSelect.onchange=function(){
					showDates();
				}
			}
			function createOption(text,value,parent){
				var option=document.createElement("option");
				option.innerHTML=text;
				option.value=value;
				parent.appendChild(option);
			}
			function showSelect(year,month){
				yearSelect.value=year;
				monthSelect.value=month;
			}
			function showDates(){
				dateul.innerHTML="";
				var year=yearSelect.value;
				var month=monthSelect.value;
				for (var i=0;i<getDays(year,month);i++) {
					createLi("",dateul);
				}
				for (var j=1;j<=getDatesOfMonth(year,month);j++) {
					createLi(j,dateul);
				}
			}
			function getDays(year,month){
				var d=new Date(year,month,1);
				return d.getDay();
			}
			function createLi(text,parent){
				var li=document.createElement("li");
				li.innerHTML=text;
				parent.appendChild(li);
			}
			function getDatesOfMonth(year,month){
				var d=new Date(year,month+1,0);
				return d.getDate();
			}
			init();
		</script>
	</body>
</html>
在页面中添加两个 <select> 标签,用来显示年份和月份;同时添加两个 <ul> 标签,一个用来显示星期,另一个用来显示日期 在 JavaScript 脚本中动态添加年份和月份,获取当前日期的年份的更多相关文章
- javascript实现的动态添加表单元素input,button等(appendChild)
		写一个小系统时,需要动态添加表单元素,按自己的实现方法写了这篇教程! 我想各位在很多网站上都看到过类似的效果! 1.先用document.createElement方法创建一个input元素! 代码如 ... 
- 用JavaScript往DIV动态添加内容
		参考:http://zhidao.baidu.com/link?url=6jSchyqPiEYCBoKdOmv52YHz9r7MTBms2pK1N6ptOX1kaR2eg320mlW1Sr6n36hp ... 
- JDK8在Java转让Javascript脚本引擎动态地定义和运行代码
		import java.lang.*; import java.util.Arrays; import java.util.List; import javax.script.Invocable; i ... 
- javascript脚本中使用json2.js解析json
		官方地址:https://github.com/douglascrockford/JSON-js 点击页面右下角“Download ZIP”下载 网页中引用json2.js,下面是一个简单的例 ... 
- 对动态加载javascript脚本的研究
		有时我们需要在javascript脚本中创建js文件,那么在javascript脚本中创建的js文件又是如何执行的呢?和我们直接在HTML页面种写一个script标签的效果是一样的吗?(关于页面scr ... 
- JavaScript脚本语言基础(三)
		导读: 数学对象(Math) 数组对象(Array) 字符串对象(String) 日期对象(Date) js对象是属性和方法的集合.JavaScript中的所有事物都是对象,如:字符串.数值.数组.函 ... 
- winform导入导出excel,后台动态添加控件
		思路: 导入: 1,初始化一个OpenFileDialog类 (OpenFileDialog fileDialog = new OpenFileDialog();) 2, 获取用户选择文件的后缀名(s ... 
- 使用JavaScript脚本控制媒体播放(顺序播放和随机播放)
		在JavaScript脚本中获取<audio.../>元素对应的对象为HTMLAudioElement对象,<video.../>元素对应的对象为HTMLVideoElemen ... 
- 关于jQuery获取不到动态添加的元素节点的问题
		遇到问题: 当我获取 $("#art-list")页面元素后去在后面追加标签的时候(append),在下面用 $(selector) 获取刚刚添加的标签,发现怎么都获取不到. 问题 ... 
随机推荐
- LeetCode1579题——圆圈中最后剩下的数字
			1.题目描述:0,1,,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字.求出这个圆圈里剩下的最后一个数字.例如,0.1.2.3.4这5个数字组成一个圆圈,从数字0开始每次删 ... 
- springboot热部署与监控
			一.热部署 添加依赖+Ctrl+F9 <dependency> <groupId>org.springframework.boot</groupId> <ar ... 
- oralce 存储过程传入 record 类型的参数?
			先定义一个 package , package中含有一个 record 类型的变量 create or replace package pkg_record is type emp_record is ... 
- SpringIOC原理浅析
			1. IoC理论的背景我们都知道,在采用面向对象方法设计的软件系统中,它的底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑. 图1:软件系统中耦合的对象 如果我们打开机械 ... 
- MFC入门示例之树控件(CTreeControl)
			1 //增加按钮 2 void CMFCApplication8Dlg::OnBnClickedButtonAdd() 3 { 4 //树中添加节点 5 CString strText; 6 GetD ... 
- 【Python】matplotlib直方图纵轴显示百分比
			其实很简单,就是算了一下百分比权重,乘以了一个权重值 import matplotlib.pyplot as plt from matplotlib.ticker import FuncFormatt ... 
- 解决“该Jenkins实例似乎已离线”
			在jenkins/pluginManager/advanced最下面 把:https://updates.jenkins-ci.org/update-center.json 换成: 1.http:// ... 
- Java 将Word转为OFD
			通常在工作中比较常用到的Microsoft Word是属于国外的文档内容编辑软件,其编译技术均属国外.而OFD是一种我国的自主文档格式,在某些特定行业或企业的文档存储技术上是一种更为安全的选择.下面将 ... 
- python实现skywalking的trace模块过滤和报警
			skywalking本身的报警功能,用起来视乎不是特别好用,目前想实现对skywalking的trace中的错误接口进行过滤并报警通知管理员和开发.所以自己就用python对skywalking做了二 ... 
- &pwn1_sctf_2016  &ciscn_2019_n_1  &ciscn_2019_c_1  &ciscn_2019_en_2&
			在做buu题目的时候,发现在最上面有几道被各位师傅打到1分的题,强迫症逼迫我去做那几道题. 这里来试着去解决这些题...讲真的,我感觉自己刷题真的少,即使是很简单的栈题目,我还是能学习到新的东西.这里 ... 
