查看本章节

查看作业目录


需求说明:

使用 JavaScript 中的 Date 对象,在页面上显示一个万年历。选择不同的年份和月份,在页面中显示当前月的日历

实现思路:

  1. 在页面中添加两个 <select> 标签,用来显示年份和月份;同时添加两个 <ul> 标签,一个用来显示星期,另一个用来显示日期
  2. 在 JavaScript 脚本中动态添加年份和月份,获取当前日期的年份和月份,显示到 <select> 标签上
  3. 根据 <select> 标签上显示的 value 值,获取当前选中年月的第一天是星期几,并绘制空 <li> 标签
  4. 获取当前选中的年月一共有多少天,并绘制对应的 <li> 标签
  5. 为两个 <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 脚本中动态添加年份和月份,获取当前日期的年份的更多相关文章

  1. javascript实现的动态添加表单元素input,button等(appendChild)

    写一个小系统时,需要动态添加表单元素,按自己的实现方法写了这篇教程! 我想各位在很多网站上都看到过类似的效果! 1.先用document.createElement方法创建一个input元素! 代码如 ...

  2. 用JavaScript往DIV动态添加内容

    参考:http://zhidao.baidu.com/link?url=6jSchyqPiEYCBoKdOmv52YHz9r7MTBms2pK1N6ptOX1kaR2eg320mlW1Sr6n36hp ...

  3. JDK8在Java转让Javascript脚本引擎动态地定义和运行代码

    import java.lang.*; import java.util.Arrays; import java.util.List; import javax.script.Invocable; i ...

  4. javascript脚本中使用json2.js解析json

    官方地址:https://github.com/douglascrockford/JSON-js   点击页面右下角“Download ZIP”下载   网页中引用json2.js,下面是一个简单的例 ...

  5. 对动态加载javascript脚本的研究

    有时我们需要在javascript脚本中创建js文件,那么在javascript脚本中创建的js文件又是如何执行的呢?和我们直接在HTML页面种写一个script标签的效果是一样的吗?(关于页面scr ...

  6. JavaScript脚本语言基础(三)

    导读: 数学对象(Math) 数组对象(Array) 字符串对象(String) 日期对象(Date) js对象是属性和方法的集合.JavaScript中的所有事物都是对象,如:字符串.数值.数组.函 ...

  7. winform导入导出excel,后台动态添加控件

    思路: 导入: 1,初始化一个OpenFileDialog类 (OpenFileDialog fileDialog = new OpenFileDialog();) 2, 获取用户选择文件的后缀名(s ...

  8. 使用JavaScript脚本控制媒体播放(顺序播放和随机播放)

    在JavaScript脚本中获取<audio.../>元素对应的对象为HTMLAudioElement对象,<video.../>元素对应的对象为HTMLVideoElemen ...

  9. 关于jQuery获取不到动态添加的元素节点的问题

    遇到问题: 当我获取 $("#art-list")页面元素后去在后面追加标签的时候(append),在下面用 $(selector) 获取刚刚添加的标签,发现怎么都获取不到. 问题 ...

随机推荐

  1. Android 高级UI组件(三)

    一.popupWindow 1.AlertDialog和PopupWindow最关键的区别是AlertDialog不能指定显示位置,只能默认显示在屏幕最中间(当然也可以通过设置WindowManage ...

  2. java配置文件的使用 —— 设置一个类为单例模式

    阅读本文章前建议先阅读:java通过JDBC访问sqlserver数据库 一.使用原因:通过JDBC连接数据库时有时会需要连接不同的数据库,而jar包.连接url.用户名和密码等都是写定在程序中,不便 ...

  3. Moment.js使用笔记

    零.前情提要 上个月开发了数据平台,用的框架是vue + Ant Design of Vue,其中用了组件[range-picker]日期选择框,涉及到时间方法就去看了momentJS,以此记录~ 如 ...

  4. Docker从入门到精通(五)——Dockerfile

    Dockerfile 简单来说就是一个包含用于组合镜像的命令的文本文档,Docker 通过读取 Dockerfile 中的指令就可以按步骤生成镜像,那么在制作镜像之前,我们先了解一下镜像的原理. 1. ...

  5. Firebug: Net Panel 使用详解

    Introduction to Firebug: Net Panel Since there is not much user documentation related to Firebug fea ...

  6. 任务日历关联(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 有时候吧,一件大事是由N件小事组成的,而这N件小事当中,不是每件事都可以在周末停下来的,当然也不是所有的事都必须在周末完成 ...

  7. java 数据类型String 【正则表达式】匹配

    1,什么是正则表达式 正则表达式是用来处理字符串的,其实正则表达式是非常复杂的,专门去系统学习需要花很长的时间,我们课程主要就是把常用的基础的给大家讲解. 正则表达式可以用来干什么: (1),匹配字符 ...

  8. Linux执行脚本报错:-bash: ./xx.sh: /bin/bash^M: bad interpreter: No such file or directory

    1.用vim打开文本 输入 : set ff 这里要先按":"号 显示文件为dos格式 2.强制装换格式为unix 先按冒号":" set ff=unix 然后 ...

  9. vue使用npm install安装太慢连接不上(设置使用淘宝镜像)

    当使用默认的npm install速度太慢时候,可以配置使用淘宝镜像 npm config set registry https://registry.npm.taobao.org

  10. [Flink-源码分析]Blink SQL 回撤解密

    因为目前我司使用的版本还是和Blink对齐的版本,所以本文还是先针对Blink中对于回撤的实现来进行源码分析. 概念 回撤这个概念,是流计算中特有的,简单理解起来就是将先前的计算结果回撤,那什么场景下 ...