js中简易日历

合集下载

轻量级的原生js日历插件calendar.js使用指南

轻量级的原生js日历插件calendar.js使用指南

轻量级的原⽣js⽇历插件calendar.js使⽤指南使⽤说明:需要引⼊插件calendar.js/calendar.min.js须要引⼊calendar.css 样式表,可以⾃定义⾃⼰想要的⽪肤本⽇历插件⽀持cmd模块化如下调⽤:复制代码代码如下:xvDate({'targetId':'date1',//时间写⼊对象的id'triggerId':['date1','dateBtn1'],//触发事件的对象id'alignId':'datesWrap1',//⽇历对齐对象'format':'-',//时间格式默认'YYYY-MM-DD HH:MM:SS''min':'2014-09-20 10:00:00',//最⼤时间'max':'2014-10-30 10:00:00'//最⼩时间});参数说明:targetId :⽇期写⼊对象的id,不能为空triggerId :触发事件的对象id,如果不设置则默认为targetIdalignId :⽇历盒⼦的对齐基准,如果不设置则默认为targetIdhms :时分秒是否开启,默认值为'on'则表⽰开启时分秒(2014-09-20 10:00:00),'off'则表⽰关闭时分秒模式(2014-09-20) format :为⽇期格式默认值为'-' (2014-09-20),'/'则表⽰(2014/09/20)min :最⼩时间限制,min 的时间格式和前⾯的时间格式保持⼀直max :最⼤时间限制,max 的时间格式和前⾯的时间格式保持⼀直zIndex :最⼤时间限制,⽇历盒⼦的层级,默认9999如果需要使⽤模块化在需要依赖的模块⽤引⼊即可如:复制代码代码如下:define('mod1',[],function(require, exports, module){var xvDate = require("xvDate");})以上所述就是本⽂的全部内容了,希望⼤家能够喜欢。

简易日历小程序使用微信小程序开发工具和JavaScript开发

简易日历小程序使用微信小程序开发工具和JavaScript开发

简易日历小程序使用微信小程序开发工具和JavaScript开发在微信小程序开发工具和JavaScript开发一款简易日历小程序,可以帮助用户管理自己的日程安排。

本文将介绍开发该小程序的步骤和相关代码。

1. 环境准备在开始开发前,需要下载并安装微信小程序开发工具,并确保具备一定的JavaScript编程基础。

2. 项目搭建打开微信小程序开发工具,点击新建项目,填写项目名称、项目目录等信息,并选择合适的框架。

3. 目录结构在项目创建完成后,可以看到默认生成的目录结构,包括app.js、app.json、app.wxss等文件。

我们需要在其中添加日历相关的代码文件。

4. 页面设计在开发工具中,可以新建一个页面用于展示日历。

点击左侧导航栏的新建页面按钮,填写页面名称,系统会自动生成相关的文件。

5. 页面代码打开新建页面的js文件,在其中编写相关的JavaScript代码。

可以使用wx.request()函数请求后端接口获取日历信息,并将数据渲染到页面中。

6. 页面样式打开新建页面的wxss文件,在其中编写相关的CSS样式代码,可以对日历的外观进行样式设计,如背景颜色、字体大小等。

7. 页面交互在页面中,可以通过监听用户的点击事件,实现日历的交互功能。

例如,用户点击某一天的日期,可以跳转到该日期对应的日程安排页面。

8. 发布小程序开发完成后,在开发工具中点击预览按钮,可以进行预览功能测试。

测试通过后,可以点击发布按钮,将小程序发布到微信平台。

9. 小程序优化为了提升小程序的性能和用户体验,可以对代码进行优化。

例如,使用缓存技术减少数据加载时间,使用小程序框架提供的组件减少代码量等。

通过以上步骤,我们可以使用微信小程序开发工具和JavaScript开发一款简易日历小程序。

该小程序可以帮助用户管理自己的日程安排,实现基本的日历功能和交互效果。

同时,开发者可以根据需求进行进一步的优化和扩展,以提升小程序的功能和用户体验。

前端开发实训案例教程初级开发简单的在线日历应用

前端开发实训案例教程初级开发简单的在线日历应用

前端开发实训案例教程初级开发简单的在线日历应用前端开发实训案例教程:初级开发简单的在线日历应用在本篇教程中,我们将学习如何利用前端开发技术创建一个简单的在线日历应用。

在线日历应用是一种常见的实际应用程序,它可以帮助用户记录和组织重要的日期和事件。

我们将使用HTML、CSS和JavaScript来实现这个日历应用。

1. 搭建基本框架我们首先创建一个基本的HTML文件。

在文件中,我们添加一个标题,一个容器用于显示日历,并引入所需的CSS和JavaScript文件。

```html<!DOCTYPE html><html><head><title>简单的在线日历应用</title><link rel="stylesheet" type="text/css" href="style.css"></head><body><h1>简单的在线日历应用</h1><div id="calendar"></div><script src="script.js"></script></body></html>```2. CSS样式接下来,我们需要为日历应用添加CSS样式。

创建一个名为`style.css`的CSS文件,并添加以下代码:```css#calendar {width: 300px;border: 1px solid #ccc;padding: 10px;}#calendar table {width: 100%;}#calendar th {background-color: #ccc;}#calendar td {text-align: center;padding: 5px;}#calendar .today {background-color: #f00;color: #fff;}#calendar .selected {background-color: #0f0;}```3. 实现日历功能现在我们开始使用JavaScript编写日历应用的逻辑。

最简约JS日历控件

最简约JS日历控件

最简约JS日历控件该控件在最新的谷歌浏览器,最新的火狐浏览器,还有在IE8上都进行成功测试,兼容性好。

很容易扩展,调用方式简单,以后的项目上日期控件可以选择自己编写的了。

function choose_date_czw(date_id,objtd){if(date_id=="choose_date_czw_close"){document.getElementById("choose_date_czw_id").style.disp lay="none";return;}if(objtd!=undefined){if(objtd=="choose_date_czw_empty"){document.getElementById(date_id).value="";}else{var year1=document.getElementById("choose_date_cz w_year").value;var month1=document.getElementById("choose_date_c zw_month").value;document.getElementById(date_id).value=year1+"-"+mo nth1+"-"+objtd.innerHTML;}document.getElementById("choose_date_czw_id").style.disp lay="none";return;}var nstr=new Date();//当前if(document.getElementById("choose_date_czw_year")!=null){ var year=document.getElementById("choose_date_czw_yea r").value;var month=document.getElementById("choose_date_czw_mo nth").value;var str=year+"/"+month+"/1";nstr=new Date(str);//当前}var ynow=nstr.getFullYear();//年份var mnow=nstr.getMonth();//月份var dnow=nstr.getDate();//今日日期var n1str=new Date(ynow,mnow,1);//当月第一天var firstday=n1str.getDay();//当月第一天星期几function is_leap(year){return(year%100==0?res=(year%400==0?1:0):res=(y ear%4==0?1:0));}var dstr="<select id=\"choose_date_czw_year\"onchange=\"cho ose_date_czw(‘"+date_id+"‘)\">";for(var y=1901;y<2050;y++){if(y==ynow){dstr+="<option value=‘"+y+"‘selected>"+y+"</opti on>"}else{dstr+="<option value=‘"+y+"‘>"+y+"</option>"}}dstr+="</select>&nbsp;<select id=\"choose_date_czw_month\"o nchange=\"choose_date_czw(‘"+date_id+"‘)\">";for(var m=1;m<13;m++){if(parseInt(mnow+1)==m){dstr+="<option value=‘"+m+"‘selected>"+m+"</opti on>"}else{dstr+="<option value=‘"+m+"‘>"+m+"</option>"}}dstr+="</select>&nbsp;<span style=‘cursor:pointer;‘onclic k=\"choose_date_czw(‘choose_date_czw_close‘)\">关闭</span>| <span style=‘cursor:pointer;‘onclick=\"choose_date_czw(‘" +date_id+"‘,‘choose_date_czw_empty‘)\">清空</span>";//一三五七八十腊(十二月),三十一日永不差;四六九冬(十一月)三十日,唯有二月二十八(闰年二十九).var m_days=new Array(31,28+is_leap(ynow),31,30,31,30,31,31, 30,31,30,31);var tr_str=Math.ceil((m_days[mnow]+firstday)/7);dstr+="<table border=‘0‘cellpadding=‘5‘cellspacing=‘0‘><tr><td>日</td><td>一</td><td>二</td><td>三</td><td>四</t d><td>五</td><td>六</td></tr>";var dqdate=new Date();//当前for(i=0;i<tr_str;i++){//外层for语句-tr标签dstr+="<tr>";for(k=0;k<7;k++){//内层for语句-td标签idx=i*7+k;//表格单元的自然序号date_str=idx-firstday+1;//计算日期if(date_str<=0||date_str>m_days[mnow]){dstr+="<td>&nbsp;</td>";}else{if(ynow==dqdate.getFullYear()&&mnow==dqdate.getMo nth()&&dqdate.getDate()==date_str){dstr+="<td onmouseover=\"this.style.backgroundColor=‘#6FF‘\"onmouseout=\"this.style.backgroundColor=‘#ff f‘\"onclick=\"choose_date_czw(‘"+date_id+"‘,this)\"styl e=‘cursor:pointer;background-color:#6FF;‘>"+date_str+"</td> ";}else{dstr+="<td onmouseover=\"this.style.backgroundC olor=‘#6FF‘\"onmouseout=\"this.style.backgroundColor=‘#ff f‘\"onclick=\"choose_date_czw(‘"+date_id+"‘,this)\"styl e=‘cursor:pointer;‘>"+date_str+"</td>";}}}dstr+="</tr>";}dstr+="</table>";if(document.getElementById("choose_date_czw_id")==null){var obj=document.getElementById(date_id);var odiv=document.createElement("div");odiv.id="choose_date_czw_id";odiv.innerHTML=dstr;odiv.style.position="absolute";odiv.style.border="1px#0CF solid";odiv.style.fontSize="12px";odiv.style.zIndex=99999;odiv.style.top=obj.offsetTop+obj.offsetHeight+"px";odiv.style.left=obj.offsetLeft+"px";document.body.appendChild(odiv);}else{document.getElementById("choose_date_czw_id").style.disp lay="block";document.getElementById("choose_date_czw_id").innerHTML= dstr;}}复制代码调用方式如下:添加日期:<input type="text"id="add_date"onclick="choose_d ate_czw(‘add_date‘)"/>运行结果如下:。

JS制作简单的日历控件【JS Date对象练习实例】

JS制作简单的日历控件【JS Date对象练习实例】

JS制作简单的日历控件【JS Date对象练习实例】一直对JS 中的Date 对象不是很熟练,缺乏操作实践,端午节抽空复习了一下,做了一个简单的日期选择控件日历外观参考了淘宝旅行中的日期控件,控件只有基本功能,木有做节日显示,木有做IE6的SELECT遮挡控制,仅供练习:使用方法:只需传入日期INPUT元素的ID即可,isSelect选项为是否为SELECT下拉选择年月设置var myDate1 = new Calender({id:'j_Date1'});var myDate2 = new Calender({id:'j_Date2',isSelect:!0});演示如下:支持选择年月支持SELECT选择年月没空做教程啦,有兴趣的看源代码吧,详细源代码+注释如下:<!DOCTYPE HTML><html><head><meta charset="utf-8"><title>日历组件示例</title><style>.calendar{font-family:Tahoma; background:#fff; float:left; border-style:solid; border-width:1px; border-color:#85BEE5 #3485C0 #3485C0 #85BEE5; position:relative; padding:10px; overflow:hidden;}.calendar dl,.calendar dd{margin:0; padding:0; width:183px; font-size:12px; line-height:22px;}.calendar dt.title-date{ display:block; border-bottom:1px solid #E4E4E4; font-weight:700; position:relative; margin-bottom:5px;}.calendar dt{ float:left; width:25px; margin-left:1px; text-align:center;}.calendar dt.title-date{ width:100%;}.calendar dd{clear: both;width: 183px;height: 139px;font-weight: 700;background:url(/cnblogs_com/NNUF/379856/o_bg.png) no-repeat; margin:0;}.prevyear,.nextyear, .prevmonth,.nextmonth{cursor:pointer;height:9px; background:url(/cnblogs_com/NNUF/379856/o_nextprv.png)no-repeat; overflow:hidden;position:absolute; top:8px; text-indent:-999px;}.prevyear{ left:4px; width:9px;}.prevmonth{ width:5px; background-position:-9px 0; left:20px;}.nextyear{ width:9px; background-position:-19px 0; right:5px;}.nextmonth{ width:5px; background-position:-14px 0; right:20px;}.calendar dd a{float: left;width: 25px;height: 22px; color:blue; overflow: hidden; text-decoration: none;margin: 1px 0 0 1px; text-align:center;}.calendar dd a.disabled{color:#999;}.calendar dd a.tody{ color:red; }.calendar dd a.on{background:blue; color:#fff;}.calendar dd a.live{cursor:pointer}.input{ border:1px solid #ccc; padding:4px; background:url(/cnblogs_com/NNUF/379856/o_nextprv.png)no-repeat right -18px;}</style></head><body><br/><br/><h3>支持选择年月&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;支持SELECT选择年月</h3><div><input type="text" id="j_Date1" class="input">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="text" id="j_Date2" class="input"></div><br/><div></div><!--日历控件JS源码--><script>/*** @namespace _CalF* 日历控件所用便捷函数* */_CalF = {// 选择元素$:function(arg,context){var tagAll,n,eles=[],i,sub = arg.substring(1);context = context||document;if(typeof arg =='string'){switch(arg.charAt(0)){case '#':return document.getElementById(sub);break;case '.':if(context.getElementsByClassName) return context.getElementsByClassName(sub);tagAll = _CalF.$('*',context);n = tagAll.length;for(i = 0;i<n;i++){if(tagAll[i].className.indexOf(sub) > -1) eles.push(tagAll[i]);}return eles;break;default:return context.getElementsByTagName(arg);break;}}},// 绑定事件bind:function(node,type,handler){node.addEventListener?node.addEventListener(type, handler, false):node.attachEvent('on'+ type, handler);},// 获取元素位置getPos:function (node) {var scrollx = document.documentElement.scrollLeft || document.body.scrollLeft,scrollt = document.documentElement.scrollTop || document.body.scrollTop;pos = node.getBoundingClientRect();return {top:pos.top + scrollt, right:pos.right + scrollx, bottom:pos.bottom + scrollt, left:pos.left + scrollx }},// 添加样式名addClass:function(c,node){node.className = node.className + ' ' + c;},// 移除样式名removeClass:function(c,node){var reg = new RegExp("(^|\\s+)" + c + "(\\s+|$)","g");node.className = node.className.replace(reg, '');},// 阻止冒泡stopPropagation:function(event){event = event || window.event;event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true;}};/*** @name Calender* @constructor* @created by VVG* @/NNUF/* @mysheller@* */function Calender() {this.initialize.apply(this, arguments);}Calender.prototype = {constructor:Calender,// 模板数组_template :['<dl>','<dt class="title-date">','<span class="prevyear">prevyear</span><span class="prevmonth">prevmonth</span>','<span class="nextyear">nextyear</span><span class="nextmonth">nextmonth</span>','</dt>','<dt><strong>日</strong></dt>','<dt>一</dt>','<dt>二</dt>','<dt>三</dt>','<dt>四</dt>','<dt>五</dt>','<dt><strong>六</strong></dt>','<dd></dd>','</dl>'],// 初始化对象initialize :function (options) {this.id = options.id; // input的IDthis.input = _CalF.$('#'+ this.id); // 获取INPUT元素this.isSelect = options.isSelect; // 是否支持下拉SELECT选择年月,默认不显示this.inputEvent(); // input的事件绑定,获取焦点事件},// 创建日期最外层盒子,并设置盒子的绝对定位createContainer:function(){// 如果存在,则移除整个日期层Containervar odiv = _CalF.$('#'+ this.id + '-date');if(!!odiv) odiv.parentNode.removeChild(odiv);var container = this.container = document.createElement('div');container.id = this.id + '-date';container.style.position = "absolute";container.zIndex = 999;// 获取input表单位置inputPosvar input = _CalF.$('#' + this.id),inputPos = _CalF.getPos(input);//console.log(inputPos.top + ':' + inputPos.right + ' ' + inputPos.bottom + ' ' + inputPos.left);// 根据input的位置设置container高度container.style.left = inputPos.left + 'px';container.style.top = inputPos.bottom - 1 + 'px';// 设置日期层上的单击事件,仅供阻止冒泡,用途在日期层外单击关闭日期层_CalF.bind(container, 'click', _CalF.stopPropagation);document.body.appendChild(container);},// 渲染日期drawDate:function (odate) { // 参数odate 为日期对象格式var dateWarp, titleDate, dd, year, month, date, days, weekStart,i,l,ddHtml=[],textNode;var nowDate = new Date(),nowyear = nowDate.getFullYear(),nowmonth = nowDate.getMonth(),nowdate = nowDate.getDate();this.dateWarp = dateWarp = document.createElement('div');dateWarp.className = 'calendar';dateWarp.innerHTML = this._template.join('');this.year = year = odate.getFullYear();this.month = month = odate.getMonth()+1;this.date = date = odate.getDate();this.titleDate = titleDate = _CalF.$('.title-date', dateWarp)[0];// 是否显示SELECTif(this.isSelect){var selectHtmls =[];selectHtmls.push('<select>');for(i = 2020;i>1970;i--){if(i != this.year){selectHtmls.push('<option value ="'+ i +'">'+ i +'</option>');}else{selectHtmls.push('<option value ="'+ i +'" selected>'+ i +'</option>');}}selectHtmls.push('</select>');selectHtmls.push('年');selectHtmls.push('<select>');for(i = 1;i<13;i++){if(i != this.month){selectHtmls.push('<option value ="'+ i +'">'+ i +'</option>');}else{selectHtmls.push('<option value ="'+ i +'" selected>'+ i +'</option>');}}selectHtmls.push('</select>');selectHtmls.push('月');titleDate.innerHTML = selectHtmls.join('');// 绑定change事件this.selectChange();}else{textNode = document.createTextNode(year + '年' + month + '月');titleDate.appendChild(textNode);this.btnEvent();}// 获取模板中唯一的DD元素this.dd = dd = _CalF.$('dd',dateWarp)[0];// 获取本月天数days = new Date(year, month, 0).getDate();// 获取本月第一天是星期几weekStart = new Date(year, month-1,1).getDay();// 开头显示空白段for (i = 0; i < weekStart; i++) {ddHtml.push('<a>&nbsp;</a>');}// 循环显示日期for (i = 1; i <= days; i++) {if (year < nowyear) {ddHtml.push('<a class="live disabled">' + i + '</a>');} else if (year == nowyear) {if (month < nowmonth + 1) {ddHtml.push('<a class="live disabled">' + i + '</a>');} else if (month == nowmonth + 1) {if (i < nowdate) ddHtml.push('<a class="live disabled">' + i + '</a>');if (i == nowdate) ddHtml.push('<a class="live tody">' + i + '</a>');if (i > nowdate) ddHtml.push('<a class="live">' + i + '</a>');} else if (month > nowmonth + 1) {ddHtml.push('<a class="live">' + i + '</a>');}} else if (year > nowyear) {ddHtml.push('<a class="live">' + i + '</a>');}}dd.innerHTML = ddHtml.join('');// 如果存在,则先移除this.removeDate();// 添加this.container.appendChild(dateWarp);// A link事件绑定this.linkOn();// 区域外事件绑定this.outClick();},// SELECT CHANGE 事件selectChange:function(){var selects,yearSelect,monthSelect,that = this;selects = _CalF.$('select',this.titleDate);yearSelect = selects[0];monthSelect = selects[1];_CalF.bind(yearSelect, 'change',function(){var year = yearSelect.value;var month = monthSelect.value;that.drawDate(new Date(year, month-1, that.date));});_CalF.bind(monthSelect, 'change',function(){var year = yearSelect.value;var month = monthSelect.value;that.drawDate(new Date(year, month-1, that.date));})},// 移除日期DIV.calendarremoveDate:function(){var odiv = _CalF.$('.calendar',this.container)[0];if(!!odiv) this.container.removeChild(odiv);},// 上一月,下一月按钮事件btnEvent:function(){var prevyear = _CalF.$('.prevyear',this.dateWarp)[0],prevmonth = _CalF.$('.prevmonth',this.dateWarp)[0],nextyear = _CalF.$('.nextyear',this.dateWarp)[0],nextmonth = _CalF.$('.nextmonth',this.dateWarp)[0],that = this;prevyear.onclick = function(){var idate = new Date(that.year-1, that.month-1, that.date);that.drawDate(idate);};prevmonth.onclick = function(){var idate = new Date(that.year, that.month-2,that.date);that.drawDate(idate);};nextyear.onclick = function(){var idate = new Date(that.year + 1,that.month - 1, that.date);that.drawDate(idate);};nextmonth.onclick = function(){var idate = new Date(that.year , that.month, that.date);that.drawDate(idate);}},// A 的事件linkOn:function(){var links = _CalF.$('.live',this.dd),i,l=links.length,that=this;for(i = 0;i<l;i++){links[i].index = i;links[i].onmouseover = function(){_CalF.addClass("on",links[this.index]);};links[i].onmouseout = function(){_CalF.removeClass("on",links[this.index]);};links[i].onclick = function(){that.date = this.innerHTML;that.input.value = that.year + '-' + that.month + '-' + that.date;that.removeDate();}}},// 表单的事件inputEvent:function(){var that = this;_CalF.bind(this.input, 'focus',function(){that.createContainer();that.drawDate(new Date());});_CalF.bind(this.input, 'click',_CalF.stopPropagation);},// 鼠标在对象区域外点击,移除日期层outClick:function(){var that = this;_CalF.bind(document, 'click',function(){that.removeDate();})}};var myDate1 = new Calender({id:'j_Date1'});var myDate2 = new Calender({id:'j_Date2',isSelect:!0});</script></body></html>。

HTML+JavaScript自己动手做日历

HTML+JavaScript自己动手做日历

HTML+JavaScript⾃⼰动⼿做⽇历当我们需要在页⾯中显⽰某⽉的事项,或是选择某⼀段⽇期时,常常要使⽤到⽇历组件。

这⼀组件同样有着许多现成的类库,然⽽亲⾃动⼿开发⼀个⽇历,从中了解其实现原理也是⾮常必要的。

在本例中我们就将制作⼀款⾮常经典的⽇历组件。

更多精彩内容欢迎访问我的个⼈博客⽪⽪猪:或者期待您的光临哦!我是⽪⽪猪,感谢各位光临,能为您排忧解难⼩站深感荣幸!祝您⽣活愉快!1. 创建DOM代码本例的HTML代码如下:<div class="calendar"><div class="title"><h1 class="green" id="calendar-title">Month</h1><h2 class="green small" id="calendar-year">Year</h2><a href="" id="prev">Prev Month</a><a href="" id="next">Next Month</a></div><div class="body"><div class="lightgrey body-list"><ul><li>MON</li><li>TUE</li><li>WED</li><li>THU</li><li>FRI</li><li>SAT</li><li>SUN</li></ul></div><div class="darkgrey body-list"><ul id="days"></ul></div></div></div>由以上代码可见,⽇历的最外层是⼀个类名为calendar的div元素,其内部包含了两⼤部分,分别是⽇历顶部的标题区域,其类名为title,以及其下⽅的⽇期区域,其类名为body。

Javascript实现万年历(日历表)

Javascript实现万年历(日历表)

Javascript实现万年历(⽇历表)<!DOCTYPE html><html><head><meta charset="utf-8"><title></title><style type="text/css">.main {width: 800px;margin: 0 auto;}.top {width: 800px;margin: 0 auto;}#nian {width: 100px;height: 30px;display: block;}#yue {width: 100px;height: 30px;display: block;}.float {display: block;width: 50px;}.center {margin: 0 auto;width: 800px;}#tab tr {height: 150px;}#tab tr td,th {width: 150px;}</style></head><body><div class="main"><div class="top"><select id="nian" class="float" onchange="huan()"></select><span class="float">年</span><select id="yue" class="float" onchange="huan()"></select><span class="float">⽉</span></div></div><div class="center"><table id="tab" border="" cellspacing="" cellpadding=""><tr><th>周⽇</th><th>周⼀</th><th>周⼆</th><th>周三</th><th>周四</th><th>周五</th><th>周六</th></tr></table></div><script type="text/javascript">var tab = document.getElementById("tab");window.onload = function() {var nian = document.getElementById("nian");var yue = document.getElementById("yue");for (var i = 2019; i >= 1970; i--) {var sel = document.createElement("option");sel.value = i;sel.innerText = i;nian.appendChild(sel);}for (var i = 1; i <= 12; i++) {var sel = document.createElement("option");sel.value = i;sel.innerText = i;yue.appendChild(sel);}huan();}function huan() {var week = 0;//周⼏var day = 1;//从第⼀天开始var days = 30;//这个⽉⼀共有⼏天// try{// var ziji=document.getElementsByTagName("td")[0];// ziji.parentElement.parentElement.removeChild(ziji.parentElement); // }catch(e){// //TODO handle the exception// }try{//添加⼀个add1的类,⽅便删除var dataa=document.getElementsByClassName("add1"); for(var i=0;i<dataa.length;){dataa[0].remove();}}catch(e){//TODO handle the exception}var nian = document.getElementById("nian").value;var yue = document.getElementById("yue").value;var date = new Date(nian + "-" + yue + "-1");//计算这个⽉有多少天var data = new Date(nian,yue,0);days=data.getDate();// alert(days)var newtr = document.createElement("tr");newtr.classList.add("add1");for (var i = 0; i < date.getDay(); i++) {if (week == 7) {week = 0;}var newtd = document.createElement("td");newtr.appendChild(newtd);week++;}if (week <= 6) {for (; week <= 6; week++, day++) {var newtd = document.createElement("td");newtd.innerText = day;newtd.value = day;newtr.appendChild(newtd);}}tab.appendChild(newtr);week = 0;newtr = document.createElement("tr");newtr.classList.add("add1");for (; day <= days; day++, week++) {if (week == 7) {week = 0;tab.appendChild(newtr);newtr = document.createElement("tr");newtr.classList.add("add1");}var newtd = document.createElement("td");newtd.innerText = day;newtd.value = day;newtr.appendChild(newtd);}tab.appendChild(newtr);}</script></body></html>。

JS实现一个简单的日历

JS实现一个简单的日历

JS实现⼀个简单的⽇历主要分为三个部分,1:获取li元素 2:如何填写对应的⽇期 3:如何获取点击li元素的事件。

1:通过节点间关系的属性children 获取li元素(两个for循坏遍历);2:在遍历填写⽇期时,在第⼀⾏判断在当⽉的第⼀天在星期⼏,然后从第⼀天开始填写,直到⼤于当⽉的天数就暂停填写,并开始填写下个⽉的⽇期。

第⼀⾏上个⽉的⽇期显⽰ : 上⽉天数显⽰开始值 = 计算上个⽉的天数 - 这个⽉开始的第⼀天在星期⼏的值 -1,然后在第⼀⾏上⽉天数显⽰开始值⾃加。

3:利⽤JS的事件冒泡获取li的innerHTML显⽰出对应⽇期效果图:代码如下:<!doctype html><html lang="en"><head><meta charset="UTF-8"><meta name="Generator" content="EditPlus®"><meta name="Author" content=""><meta name="Keywords" content=""><meta name="Description" content=""><title>calendar</title><style>.clear:after{content:"";display:table;clear:both;}.left{float:left;}ul{padding:0px;margin-top:5px;margin-bottom:0px;}ul>li{float:left;list-style:none;width:30px;height: 21px;border: 1px solid #ccc;text-align:center;}.gray{color:#766565;}.top {height:25px;}.top .lf-tri{border:10px solid transparent;border-right-color:black;margin-top:4px;}.top .rf-tri{border:10px solid transparent;border-left-color:black;margin-top:4px;}.top .content{width:185px;height:5px;text-align:center;}</style></head><body><div class="top clear"><div class="left lf-tri" onclick="lastMonth()"></div> <div class="left content">2017年2⽉1⽇</div><div class="left rf-tri" onclick=" nextMonth()"></div> </div><div><div id="week"><ul class="clear"><li>⽇</li><li>⼀</li><li>⼆</li><li>三</li><li>四</li><li>五</li><li>六</li><ul></div><div id="date" onclick='getDateNum(event)'><ul class="clear"><li>30</li><li>31</li><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul class="clear"><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul><ul class="clear"><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li></ul><ul class="clear"><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li></ul><ul class="clear"><li>27</li><li>28</li><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul><ul class="clear"><li>27</li><li>28</li><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li></ul></div><div><script>function $(id){return document.getElementById(id);}function change(cls){return document.getElementsByClassName(cls);}function getDateNum(e) {console.log(e && e.target.nodeName)//打印发⽣事件的元素,再获取元素nodeName if(e.target.nodeName=="LI"){//先判断nodeName是LIif(e.target.className!="gray"){//点击本⽉的⽇期,显⽰在⽇期栏change("content")[0].innerHTML = year+'年'+(month+1)+'⽉'+e.target.innerHTML+'⽇'; }else{//点击灰⾊⽇期即(上个⽉或者下个⽉⽇期)切换到当⽉if(e.target.innerHTML>14){lastMonth();}else {nextMonth();}}}}//获取年、⽉var today = new Date();var year=today.getFullYear(), month = today.getMonth();var totalDay;var uls=$("date").children,list;function loadCalendar(){totalDay=getMonthDays(year,month+1);//计算⼀个⽉的天数var firstDay = (new Date(year,month,1)).getDay();//计算每个⽉1号在星期⼏var lastMonthDay=getMonthDays(year,month);var lastDayCal=lastMonthDay-firstDay+1;//计算上个⽉在第⼀⾏显⽰的天数//获取ul元素var num=1 ,nextNum=1;//⽇期显⽰// 类数组对象转数组//uls = Array.prototype.slice.call(uls)//获取li元素填充for(var r=0;r<uls.length;r++){list=uls[r].children;//遍历ul,获得lifor(var line=0;line<list.length;line++){if(r==0){//在第⼀⾏与第⼀天进⾏判断⼤于等于第⼀天时载⼊⽇期if(line>=firstDay){list[line].innerHTML=num++;list[line].setAttribute("class","");}else {list[line].innerHTML=lastDayCal++;//第⼀⾏的上个⽉天数显⽰list[line].setAttribute("class","gray");}}else {//判断是否超出天数 ,不超出则继续加,超出则显⽰下个⽉⽇期if(num<=totalDay){list[line].setAttribute("class","");list[line].innerHTML=num++;}else {list[line].innerHTML=nextNum++;//下个⽉⽇期显⽰list[line].setAttribute("class","gray");}}}}}loadCalendar();function getMonthDays(year,month){//判断2⽉份天数if(month==2){days= (year%4==0)&&(year%100!=0)||(year%400==0)? 29:28;}else {//1-7⽉单数⽉为31⽇if(month<7){days= month%2==1?31:30;}else {//8-12⽉双⽉为31⽇days = month%2==0?31:30;}}return days;}//右击箭头下个⽉//change("rf-tri")[0].onclick =function nextMonth() {month++;if(month>11){year+=1;month=0;}change("content")[0].innerHTML=year+"年"+(month+1)+"⽉"+"1⽇";//console.log(month+1);loadCalendar();}//左击箭头上个⽉//change("lf-tri")[0].onclick =function lastMonth() {month--;if(month<0){month=11;year-=1;}change("content")[0].innerHTML=year+"年"+(month+1)+"⽉"+"1⽇";//console.log(month+1);loadCalendar();}</script></body></html>以上就是本⽂的全部内容,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,同时也希望多多⽀持!。

js实现日历的简单算法

js实现日历的简单算法

js实现⽇历的简单算法最近有⽤到⽇历可需要编辑⽂本的⽇历,为了绑定数据的⽅便,所以⽤js写了⼀套⽇历,其实思想也是很简单。

实现步骤如下:1:⾸先取得处理⽉的总天数JS不提供此参数,我们需要计算。

考虑到闰年问题会影响⼆⽉份的天数,我们先编写⼀个判断闰年的⾃编函数:function is_leap(year) {return (year%100==0?res=(year%400==0?1:0):res=(year%4==0?1:0));}2:接着定义⼀个包含⼗⼆个⽉在内的⽉份总天数的数组:m_days=new Array(31,28+is_leap(ynow),31,30,31,31,30,31,30,31,30,31);3:m_days这个数组⾥,⼆⽉份的天数已经加⼊闰年的信息:28+is_leap(ynow)。

数组元素从0开始,正好对应于JS提供的Date函数提供的getMonth返回值,即0表⽰⼀⽉,1表⽰⼆⽉,2表⽰三⽉,依此类推。

这样,各⽉总数可以这样取得:m_days[x]。

其中,x为0⾄11的⾃然数。

4:计算处理⽉第⼀天是星期⼏可以使⽤Date函数的getDay取得,返回的值从0到6,0表⽰星期⼀,1表⽰星期⼆,2表⽰星期三,其余依此类推。

代码如下(假设要处理的时间为2008年3⽉):n1str=new Date(2008,3,1);firstday=n1str.getDay();有了⽉总天数和该⽉第⼀天是星期⼏这两个已知条件,就可以解决表格所需⾏数问题:(当前⽉天数+第⼀天是星期⼏的数值)除以七。

表格函数需要整数,因此,我们使⽤Math.ceil来处理:tr_str=Math.ceil((m_days[mnow] + firstday)/7);表格中的tr标签实际上代表表格的⾏,因此变量tr_str是我们往下写表格的重要依据。

5:打印⽇历表格可以使⽤两个for语句嵌套起来实现:外层for语句写⾏,内层for语句写单元格。

简单JavaScript日历及详细说明

简单JavaScript日历及详细说明

简单JavaScript⽇历及详细说明效果图:测试代码:"/TR/xh tml1/DTD/xhtml1-transitional.dtd"><metacontent="text/html; charset=utf-8" http-equiv="Content-Type"/> <title>calendar2</title> <style type="text/css"> #calendar{ background:#000; color:#FFF; font-size:0.8em; } #tittle{ font-size:1.4em; padding:4px 0.55em; } #days th { font-weight:bold; text-align:center; padding:4px 0.55em; } #calendar td{ text-align:center; padding:4px 0.55em; } #today{ color:#F00; font-weight:bold; } </style><scripttype="text/javascript"> var calendar = { dayTable:null, //初始化TABLE year:null, //初始化年 month:null, //初始化⽉份getFirstDay:function(year ,month){ //获取每个⽉第⼀天再星期⼏ var firstDay = newDate(year,month,1); return firstDay.getDay(); //getDay()⽅法来获取 }, getMonthLen:function(ye ar,month){ //获取当⽉总共有多少天 var nextMonth = newDate(year,month+1,1); //获取下个⽉的第⼀天nextMonth.setHours(next Month.getHours() - 3); //由于获取的天是0时,所以减去3⼩时则可以得出该⽉的天数 return nextMonth.getDate(); //返回当天⽇期 }, createCalendar:function(f orm,date){ //创建⽇历⽅法calendar.year =date.getFullYear(); //获得当时的年份,并赋值到全选注:引⼊外部Js需再刷新⼀下页⾯才能执⾏][程序说明]主要为calendar类,⾥⾯的⽅法说明有:getFirstDay:获取每个⽉第⼀天再星期⼏getMonthLen:获取当⽉总共有多少天createCalendar:创建⽇历⽅法clearCalendar:清空TABLE⽅法init:运⾏⽅法[⽅法介绍]getFirstDay中主要⽤了new Date()的getDay()⽅法,该⽅法是⽤于获取⽇期所在星期⼏.但有⼀个特别需要注意的地⽅,就是getDay()⽅法所获取的星期数如下:星期⽇为0,星期⼀为1,星期⼆为2,星期三为3,星期四为4,星期五为5,星期六为6getMonthLen⽅法⽤于获取当⽉的天数,也就是⽬标为获取当⽉最后⼀天的⽇期即可.所以思维是获取下个⽉第⼀天的0时,然后减去3个⼩时就可以得到当⽉天数.nextMonth.setHours(nextMonth.getHours() - 3);减去3⼩时的原因参考<<DHTML Cookbook>>是这样说的:三个⼩时的修正⽤于处理在⽉份中包含了夏季时间到冬季时间的转换时发⽣的⽇期计算的异常现象.但这解释我也不太理解,所以就直接按照巨⼈的做法做了,若果有⼈知道该异常现象是怎么回事,可以告诉我.⽽该⽅法主要⽤了Date的setHours()和getDate()⽅法,分别⽤于获得⼩时数和天数.createCalendar创建⽇历的⽅法,由于我⾃⾝本来写好了HTML代码,所以不直接⽤DOM来⽣成,这⾥主要是写⼊⽇期数.写⼊⽇期的主要过程为:for(var i = 1;i <= monthLen;i++){calendar.dayTable[i+firstDay-1].innerHTML = i;}monthLen为getMonthLen()⽅法所获取的当⽉长度,循环过程不应该超过该长度.firstDay则由getFirstDay()⽅法获得第⼀天的星期值,只要i+firstDay就可以得到开始第⼀天所在⽇历单元格的位置,但由于数组从0开始,所以另外减去1.在for循环插⼊值的过程中并判断今天的⽇期,并为今天加⼊⼀个特别的id="today",代码如下:if((i+firstDay-2) == new Date().getDate() && calendar.month == new Date().getMonth() && calendar.year == newDate().getFullYear()){calendar.dayTable[i+firstDay-1].id = 'today';}clearCalendar⽅法则⽤来每次换⽉的过程中,清空⽇历,主要由for循环执⾏,过程⽐较简单,所以不多详细介绍.另外特别说明2个单击事件,都是换⽉作⽤,其中为向前⼀个⽉和向后⼀个⽉:preMon.onclick = function(){calendar.createCalendar(form,new Date(calendar.year,calendar.month-1,1));}nextMon.onclick = function(){calendar.createCalendar(form,new Date(calendar.year,calendar.month+1,1));}由于把整体的year和month设置为calendar的属性,所以只需在过程中对其⽉份进⾏加减即可.其中由于在onclick事件中,所以this分别指向preMon和nextMon,所以在内部不使⽤this,直接使⽤calendar.在createCalendar不使⽤this也是这个原因.[使⽤说明]HTML和CSS样式可以⾃⾏修改,但是整体不做太⼤改变的情况下.直接待⽤calendar类,并且使⽤init⽅法,把⽇历HTML的id调⼊即可,如下:calendar.init(calendars);在整个过程中,需要注意的就是getFirstDay()和getMonthLen()⽅法的思维,只要了解了主要的部分.输⼊⽇期的⽅法可以有很多. 改程序还有许多需要改进的地⽅,希望⼤家给点意见.~`尤其是在代码⾥⾯,有哪些地⽅需要注意的,本⼈写的代码不太多,所以希望各位给与批评,然后我能发现错误进⾏改正.。

js css html实现简单的日历

js css html实现简单的日历

web页面中很多地方都会用到日历显示,选择等,本文用html、css、javascript实现简单的日历。

完成以后的效果与页面左侧的效果差不多,可以切换上个月、下个月。

也可以根据实际情况进行扩展。

htmlhtml部分比较简单,声明一个div,具体的html用javascript生成。

整体内容大概是这样的:&nbsp;&lt;!doctype html&gt;&lt;html&gt;&lt;head&gt;&nbsp; &lt;meta charset='utf-8'&gt;&nbsp; &lt;link rel='stylesheet' href='外部的css文件路径' /&gt; &nbsp;&nbsp; &lt;title&gt;demo&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&nbsp; &lt;div class='calendar' id='calendar'&gt;&lt;/div&gt;&nbsp; &lt;script type='text/javascript' src='外部的javascript文件路径'&gt;&lt;/script&gt;&lt;/body&gt;&lt;/html&gt;css/* 整体设置*/*{margin:0px;padding:0px;}/**&nbsp;* 设置日历的大小&nbsp;*/.calendar{&nbsp; width: 240px;&nbsp; height: 400px;&nbsp; display: block;}/**&nbsp;* 设置日历顶部盒子&nbsp;*/.calendar .calendar-title-box{&nbsp; position: relative;&nbsp; width: 100%;&nbsp; height: 36px;&nbsp; line-height: 36px;&nbsp; text-align:center;&nbsp; border-bottom: 1px solid #ddd;}/**&nbsp;* 设置上个月的按钮图标&nbsp;*/.calendar .prev-month {&nbsp; position: absolute;&nbsp; top: 12px;&nbsp; left: 0px;&nbsp; display: inline-block;&nbsp; width: 0px;&nbsp; height: 0px;&nbsp; border-left: 0px;&nbsp; border-top: 6px solid transparent;&nbsp; border-right: 8px solid #999;&nbsp; border-bottom: 6px solid transparent; &nbsp; cursor: pointer;}/**&nbsp;* 设置下个月的按钮图标&nbsp;*/.calendar .next-month {&nbsp; position: absolute;&nbsp; top: 12px;&nbsp; right: 0px;&nbsp; display: inline-block;&nbsp; width: 0px;&nbsp; height: 0px;&nbsp; border-right: 0px;&nbsp; border-top: 6px solid transparent;&nbsp; border-left: 8px solid #999;&nbsp; border-bottom: 6px solid transparent; &nbsp; cursor: pointer;}/* 设置日历表格样式*/.calendar-table{&nbsp; width: 100%;&nbsp; border-collapse: collapse;&nbsp; text-align:center;}/* 表格行高*/.calendar-table tr{&nbsp; height: 30px;&nbsp; line-height: 30px;}/* 当前天颜色特殊显示*/.currentDay {&nbsp; color: red;}/* 本月文字颜色*/.currentMonth {&nbsp; color: #999;}/* 其他月颜色*/.otherMonth{&nbsp; color: #ede;}样式设置基本没什么课说的,一些简单的设置。

js制作简易年历完整实例

js制作简易年历完整实例

js制作简易年历完整实例本⽂实例讲述了js制作简易年历的⽅法。

分享给⼤家供⼤家参考。

具体如下:今天学习了⼀下⽤js来实现年历的制作,顺便复习了⼀下this的⽤法,跟选项卡的制作有点差别,新⽤到了innerHTML,希望⾃⼰坚持下去,各位js⼤神也多多指点。

innerHtml的⽤法现在⽤top.innerHTML="..........";的⽅法就可以向这个id的位置写⼊HTML代码了。

例如top.innerHTML="";就可以在top对应的位置出现⼀个button了!程序实现思路:1. 类似选项卡,只是底部有⼀个div;2. innerHTML的使⽤3.数组的使⽤①定义:arr[0,1,2,3]②使⽤:arr[0]4.字符串连接①作⽤:连接两个字符串 “+”②问题:连接中的优先级⽤()解决实现源码:JavaScript:复制代码代码如下:<script type="text/javascript">window.onload=function(){var arr=['快过年了,⼤家⼀起去放鞭炮咯!','马上上学了,不开⼼!','妇⼥节快乐!','很平淡的四⽉','劳动光荣!','⼉童节快乐!','好热的七⽉!','⼋⼀建军节!','⼜开学了哎!'];var oDiv=document.getElementById('tab');var oLi=oDiv.getElementsByTagName('li');var oTxt=oDiv.getElementsByTagName('div')[0];var i=0;for(var i=0;i<oLi.length;i++){oLi[i].index=i;oLi[i].onmouseover=function (){for(var i=0;i<oLi.length;i++){oLi[i].className='';}this.className='active';oTxt.innerHTML='<h2>'+(this.index+1)+'⽉活动</h2><p>'+arr[this.index]+'</p>'; };}};</script>CSS:复制代码代码如下:<style type="text/css">* { padding: 0;margin: 0; }li { list-style: none; }body { background: #f6f9fc; font-family: arial; }.calendar { width: 210px;margin: 50px auto 0;padding: 10px 10px 20px 20px;background: #eae9e9; }.calendar ul { width: 210px;overflow: hidden;padding-bottom: 10px; }.calendar li { float: left;width: 58px;height: 54px;margin: 10px 10px 0 0;border: 1px solid #fff;background: #424242;color: #fff;text-align: center;cursor: pointer; }.calendar li h2 { font-size: 20px; padding-top: 5px; }.calendar li p { font-size: 14px; }.calendar .active { border: 1px solid #424242;background: #fff;color: #e84a7e; }.calendar .active h2 { }.calendar .active p { font-weight: bold; }.calendar .text { width: 178px;padding: 0 10px 10px;border: 1px solid #fff;padding-top: 10px;background: #f1f1f1;color: #555; }.calendar .text h2 {font-size: 14px; margin-bottom: 10px; }.calendar .text p { font-size: 12px; line-height: 18px; }</style>复制代码代码如下:<body><div id="tab" class="calendar"><ul><li class="active"><h2>1</h2><p>⼀⽉</p></li> <li><h2>2</h2><p>⼆⽉</p></li><li><h2>3</h2><p>三⽉</p></li><li><h2>4</h2><p>四⽉</p></li><li><h2>5</h2><p>五⽉</p></li><li><h2>6</h2><p>六⽉</p></li><li><h2>7</h2><p>七⽉</p></li><li><h2>8</h2><p>⼋⽉</p></li><li><h2>9</h2><p>九⽉</p></li><li><h2>10</h2><p>⼗⽉</p></li><li><h2>11</h2><p>⼗⼀⽉</p></li><li><h2>12</h2><p>⼗⼆⽉</p></li></ul><div class="text"></div></div></body>效果图如下:希望本⽂所述对⼤家的javascript程序设计有所帮助。

简洁JS日历控件支持日期和月份选择(转)

简洁JS日历控件支持日期和月份选择(转)

简洁JS⽇历控件⽀持⽇期和⽉份选择(转)以下这个JS⽇历控件是我的闲暇之余⾃⼰编写的,所有的代码全部在IE7/IE8/Firefox下⾯测试通过,⽽且可以解决被iframe层遮盖的问题。

现在只提供两种风格(简洁版和古典版)和两种语⾔(英⽂和中⽂)。

⽀持⾃定义⽇期格式,设定时间范围。

默认为古典版,英⽂,下⾯来看简单的缩略图。

⾸先是简洁版:⽇期选择器⽉份选择器古典版:⽇期选择器⽇期选择器中⽂语⾔⽉份选择器下⾯是使⽤⽅法:在要使⽤这个控件的页⾯上引⼊这个JS<script type="text/javascript" src="javascript/DatePicker.js"></script>使⽤⽉份选择器,默认时间格式为yyyy-MM<input id="begintime" type="text" onclick="setmonth(this)" readonly="readonly" />使⽤⽇期选择器,默认时间格式为yyyy-MM-dd<input id="endtime" type="text" onfocus="setday(this)" readonly="readonly" />使⽤⽇期选择器,⼀共提供五个参数,其中第⼀个参数是Object类型,指需要填⼊⽇期的元素对象;第⼆个参数是时间的格式,默认为yyyy-MM-dd;第三、四个参数分别为开始时间和结束时间;第五个参数是语⾔种类,这个1表⽰中⽂,0为英⽂(默认采⽤英⽂)<input id="endtime" type="text" onfocus="setday(this,‘yyyy-MM-dd’,'2010-01-01','2010-12-30',1)" readonly="readonly" />风格默认使⽤古典版,如果需要使⽤简洁版,则进⼊代码中将上述代码中的上部分代码(30⾏-56⾏)注释,在把他换成下⾯部分的代码(57⾏-83⾏)。

原生JavaScript实现日历功能代码实例(无引用Jq)

原生JavaScript实现日历功能代码实例(无引用Jq)

原⽣JavaScript实现⽇历功能代码实例(⽆引⽤Jq)这篇⽂章主要介绍了原⽣JavaScript实现⽇历功能代码实例(⽆引⽤Jq),⽂中通过⽰例代码介绍的⾮常详细,对⼤家的学习或者⼯作具有⼀定的参考学习价值,需要的朋友可以参考下成品显⽰,可左右切换⽉份html 代码<!DOCTYPE html><html><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>移动端⽇历</title><link rel="stylesheet" href="./css/calendar.css" rel="external nofollow" ></head><body><div id="calendarElement"><div class="header"><div class="prev"><i class="previ"></i></div><div class="date"></div><div class="next"><i class="nexti"></i></div></div><div class="content"><div class="week"><div>⽇</div><div>⼀</div><div>⼆</div><div>三</div><div>四</div><div>五</div><div>六</div></div><div class="weekMany clearfloat"></div></div></div><script src="./js/calendar.js"></script></body></html>css代码*{margin: 0;padding: 0;}/*清除浮动代码*/.clearfloat:after{display:block;clear:both;content:"";visibility:hidden;height:0}.clearfloat{zoom:1}#calendarElement{margin: 100px auto;width: 80%;box-shadow: 0 0 10px #999999;}#calendarElement>.header{height: 80px;background-color: coral;display: flex;border-bottom: 1px solid #fff;}#calendarElement>.header .prev{width: 20%;position: relative;}height: 20px;display: block;position: absolute;left: 50%;top: 50%;margin-top: -10px;margin-left: -10px;transform: rotate(45deg);border: 2px solid #fff;border-right: none;border-top: none;}#calendarElement>.header .next{position: relative;}#calendarElement>.header .next i{width: 20px;height: 20px;display: block;position: absolute;left: 50%;top: 50%;margin-top: -10px;margin-left: -10px;transform: rotate(45deg);border: 2px solid #fff;border-left: none;border-bottom: none;}#calendarElement>.header .date{width: 60%;font-size: 22px;line-height: 80px;color: #fff;text-align: center;}#calendarElement>.header .next{width: 20%;}#calendarElement>.content >.week{box-sizing: border-box;width: 100%;height: 40px;color: #fff;display: flex;padding: 0 1%;}#calendarElement>.content >.week >div{width: 14%;text-align: center;line-height: 40px;}#calendarElement>.content >.weekMany{padding-top: 5px;padding-bottom: 15px;}#calendarElement>.content >.weekMany>div{float: left;width: 14.28%;height: 40px;text-align: center;line-height: 40px;font-size: 14px;}#calendarElement>.content >.weekMany>.otherMonth{color: #999999}JS代码var currentTime=""; //当前时间年⽉⽇var dom=document.querySelector("#calendarElement"); //承载元素var color="";getCurrentTime();randomColor();function getCurrentTime(){ //获取当前时间var time=new Date();var year=time.getFullYear();var month=time.getMonth()+1;var day=time.getDate();if(month<10){month="0"+month}var data=year+ "-" +month;currentTime=year+ "-" +month+"-"+day;document.querySelector(".date").innerHTML=data;};dom.addEventListener("click",function(e){if(e.target.className=="previ" || e.target.className=="prev"){getMonths("prev")}else if(e.target.className=="nexti" || e.target.className=="next"){getMonths("next")}})function showDay(){var html="";var MonthOne=currentTime;var yearMonth=currentTime.split('-').slice(0,2);yearMonth=yearMonth.join('-');document.querySelector(".date").innerHTML=yearMonth;MonthOne=MonthOne.split('');MonthOne.splice(8,2,"01")MonthOne=MonthOne.join('');var monthLen=getMonthLength(MonthOne); //每⽉有多少天var weekMany=new Date(MonthOne).getDay(); //每⽉⼀号是星期⼏html+=getPrevMonthHtml(weekMany);html+=getNowMonthHtml(monthLen);html+=getNextMonthHtml(weekMany,monthLen);document.querySelector(".weekMany").innerHTML=html;}function getPrevMonthHtml(weekMany){var html="";var lastMonth=currentTime.substring(0, 7); //得出年⽉lastMonth=lastMonth.split('-')if(lastMonth[1]-1==0){lastMonth[1]=12;lastMonth[0]=lastMonth[0]-1;}else if(lastMonth[1]-1<10){lastMonth[1]="0"+(lastMonth[1]-1);}lastMonth=lastMonth.join('-');var monthLen=getMonthLength(lastMonth);var start=monthLen-weekMany;for(var i=start+1;i<=monthLen;i++){html+='<div class="otherMonth day" data-date="'+lastMonth+'-'+i+'">'+i+'</div>';}return html;}function getNowMonthHtml(monthLen){var html="";var MonthOne=currentTime.substring(0, 7); //得出年⽉var today=currentTime.split('-')[2];for(var i=1;i<=monthLen;i++){if(i<10){var q="0"+i;}else{var q=i;}if(i==today){html+='<div class="thisMonth day" style="background-color:'+color+';color:#fff" data-date="'+MonthOne+'-'+q+'">'+i+'</div>'; }else{html+='<div class="thisMonth day" data-date="'+MonthOne+'-'+q+'">'+i+'</div>';}}return html;}function getNextMonthHtml(weekMany,monthLen){var html="";var daynum=weekMany+monthLen;if(daynum%7==0){}else{var num=daynum%7;var lessNum=7-num; //差⼏天var lowerMonth=currentTime.substring(0, 7); //得出年⽉lowerMonth=lowerMonth.split('-')if(lowerMonth[1]+1==13){lowerMonth[1]="0"+1;lowerMonth[0]=+lowerMonth[0]+1;}else{lowerMonth[1]=+lowerMonth[1]+1;if(lowerMonth[1]<10){lowerMonth[1]="0"+lowerMonth[1];}}lowerMonth=lowerMonth.join('-');for(var i=1;i<=lessNum;i++){if(i<10){var q="0"+i}html+='<div class="otherMonth day" data-date="'+lowerMonth+'-'+q+'">'+i+'</div>';}}return html;}function getMonths(around){if(around=="prev"){currentTime=currentTime.split('-');currentTime[1]=currentTime[1]-1;if(currentTime[1]==0){currentTime[1]="12"currentTime[0]=+currentTime[0]-1}if(currentTime[1]<10){currentTime[1]="0"+currentTime[1]}currentTime=currentTime.join('-');showDay();}else if(around=="next"){currentTime=currentTime.split('-');currentTime[1]=+currentTime[1]+1;if(currentTime[1]==13){currentTime[1]="1"currentTime[0]=+currentTime[0]+1}if(currentTime[1]<10){currentTime[1]="0"+currentTime[1]}currentTime=currentTime.join('-');showDay();}}function getMonthLength(date) { // 获取每⽉有多少天let d = new Date(date)// 将⽇期设置为下⽉⼀号d.setMonth(d.getMonth()+1)d.setDate('1')// 获取本⽉最后⼀天d.setDate(d.getDate()-1)return d.getDate()}function randomColor(){ //随机颜⾊color = '#'+Math.floor(Math.random()*16777215).toString(16);if(color.length==6){color+="0"}document.querySelector(".header").style.backgroundColor=color;document.querySelector(".week").style.backgroundColor=color;};以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

前端:运用js制作一个万年历程序

前端:运用js制作一个万年历程序

前端:运⽤js制作⼀个万年历程序前端:运⽤js制作⼀个万年历程序1.HTML代码⾸先,依旧是⼀个套路,先写HTML代码,就好⽐如建⼀座楼先建地基和楼的结构⼀样。

外部这个class属性值为time的div标签是为了让整个内容处于居中地位。

class属性值为head1的div标签是⽤于装两个下拉框,既然是万年历,肯定可以看到某年某⽉的⽇历啊!两个下拉框分别⽤于设置年和⽉(当然其中需要js动态⽣成)。

class属性值为head2的div标签⽤于显⽰星期,分别为1,2,3,4,5,6,7。

class属性值为footer的div标签也就是⽇历部分了,这是⽤js动态⽣成的。

class属性值为cur的div标签主要⽤于显⽰当前时间哈!这也需要⽤到js的哈!2.CSS样式关于css样式,⼩编就主要讲⼀讲这个class属性为time的div样式和关于⽇历部分的css样式设置!为了是整个内容处于居中地位,需要设置⼀下这个width和height,例外需要设置⼀下margin属性,如下(⼩编根据需要设置的哈!):关于⽇历部分,这个部分是放在class属性值为footer的div标签内部的,⾥⾯放⼀些div标签,div内部的内容为某⽉的某号,为了使这些div标签能在⼀⾏显⽰7个(⼀周7天),把这些div标签设置为左浮动,并且⼤⼩为宽48px。

为什么是48px呢?350/7=50,⽽边框设置为1px,也就是48+1+1=50,如果⼤于48,那么⼀⾏肯定会装不下7个,⼩于的话,除了与周⼏不匹配之外,界⾯效果也不怎的好啊!样式设置如下:3.JS代码⼩编就讲⼀下那个点击年或者⽉的下拉框之后⽇历内容变化吧!这主要涉及到js的onchange事件,也就是下拉框内容变化之后会触发的事件,主要涉及到如下这个函数。

其中第⼀个for循环,是产⽣⼏个空的div标签,⾥⾯没有任何内容,如果某⽉的1号是周⼀,那么这个循环0次,如果某⽉的1号是周⼀,那么这个for循环1次,依次类推。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Js中简易日历效果图:
Html代码:
<html>
<head>
<style type="text/css">
button{
width:80px;
height:80px;
}
.button1{
background-color:#63F;
}
.button2{
background-color:#0CF;
}
#info{
height:100px;
width:240px;
background-color:#CCC;
}
</style>
<script language="javascript">
var infoArr=['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']; window.onload=function(){
var btns=document.getElementsByTagName('button');
for(var i=0;i<btns.length;i++)
{
btns[i].index=i+1;
btns[i].className="button1";
btns[i].onmouseover=function(){
document.getElementById('info').innerHTML=infoArr[this.index-1];
for(var j=0;j<btns.length;j++)
{
btns[j].className="button1";
};
this.className="button2";
}
}
}
</script>
</head>
<body>
<div id="btnDiv">
<button>一月</button><button>二月</button><button>三月</button><br/>
<button>四月</button><button>五月</button><button>六月</button><br/>
<button>七月</button><button>八月</button><button>九月</button><br/>
<button>十月</button><button>十一月</button><button>十二月</button><br/>
</div>
<div id="info"></div>
</body>
</html>。

相关文档
最新文档