手把手教你做html日历

废话少说,直接上代码:

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title>示例</title>
        <script type="text/javascript" src="js/jquery-1.9.1.min.js" ></script>
    </head>

    <body>
        <script type="text/javascript">
            var $$ = function(id) {
				return "string" == typeof id ? document.getElementById(id) : id;
			};
			var Class = {
				create: function() {
					return function() {
						this.initialize.apply(this, arguments);
					}
				}
			}
			Object.extend = function(destination, source) {
				for (var property in source) {
					destination[property] = source[property];
				}
				return destination;
			}
			var Calendar = Class.create();
			Calendar.prototype = {
				initialize: function(container, options) {
					this.Container = $$(container); //容器(table结构)
					this.Days = []; //日期对象列表
					this.SetOptions(options);
					this.Year = this.options.Year;
					this.Month = this.options.Month;
					this.SelectDay = this.options.SelectDay ? new Date(this.options.SelectDay) : null;
					this.onSelectDay = this.options.onSelectDay;
					this.onToday = this.options.onToday;
					this.onFinish = this.options.onFinish;
					this.Draw();
				},
				//设置默认属性
				SetOptions: function(options) {
					this.options = { //默认值
						Year: new Date().getFullYear(), //显示年
						Month: new Date().getMonth() + 1, //显示月
						SelectDay: null, //选择日期
						onSelectDay: function() {}, //在选择日期触发
						onToday: function() {}, //在当天日期触发
						onFinish: function() {} //日历画完后触发
					};
					Object.extend(this.options, options || {});
				},
				//上一个月
				PreMonth: function() {
					//先取得上一个月的日期对象
					var d = new Date(this.Year, this.Month - 2, 1);
					//再设置属性
					this.Year = d.getFullYear();
					this.Month = d.getMonth() + 1;
					//重新画日历
					this.Draw();
				},
				//下一个月
				NextMonth: function() {
					var d = new Date(this.Year, this.Month, 1);
					this.Year = d.getFullYear();
					this.Month = d.getMonth() + 1;
					this.Draw();
				},
				//画日历
				Draw: function() {
					//用来保存日期列表
					var arr = [];
					//用当月第一天在一周中的日期值作为当月离第一天的天数
					for (var i = 1, firstDay = new Date(this.Year, this.Month - 1, 1).getDay(); i <= firstDay; i++) {
						arr.push("&nbsp;");
					}
					//用当月最后一天在一个月中的日期值作为当月的天数
					for (var i = 1, monthDay = new Date(this.Year, this.Month, 0).getDate(); i <= monthDay; i++) {
						arr.push(i);
					}
					var frag = document.createDocumentFragment();
					this.Days = [];
					while (arr.length > 0) {
						//每个星期插入一个tr
						var row = document.createElement("tr");
						//每个星期有7天
						for (var i = 1; i <= 7; i++) {
							var cell = document.createElement("td");
							cell.innerHTML = "&nbsp;";
							if (arr.length > 0) {
								var d = arr.shift();
								cell.innerHTML = d;
								if (d > 0) {
									this.Days[d] = cell;
									//判断是否今日
									if (this.IsSame(new Date(this.Year, this.Month - 1, d), new Date())) {
										this.onToday(cell);
									}
									//判断是否选择日期
									if (this.SelectDay && this.IsSame(new Date(this.Year, this.Month - 1, d), this.SelectDay)) {
										this.onSelectDay(cell);
									}
								}
							}
							row.appendChild(cell);
						}
						frag.appendChild(row);
					}
					//先清空内容再插入(ie的table不能用innerHTML)
					while (this.Container.hasChildNodes()) {
						this.Container.removeChild(this.Container.firstChild);
					}
					this.Container.appendChild(frag);
					this.onFinish();
				},
				//判断是否同一日
				IsSame: function(d1, d2) {
					return (d1.getFullYear() == d2.getFullYear() && d1.getMonth() == d2.getMonth() && d1.getDate() == d2.getDate());
				}
			};
		</SCRIPT>
		<style type="text/css">
			.Calendar {
				font-family: Verdana;
				font-size: 12px;
				background-color: palegreen;
				text-align: left;
				margin: 0 auto;
				width: 90%;
				height: 620px;
				padding: 10px;
				line-height: 1.5em;
				border: 1px solid red;
			}
			.Calendar a {
				color: #1e5494;
			}
			.Calendar table {
				width: 100%;
				border: 1px;
				border-collapse: collapse; //相邻的相邻边被合并
			}
			.Calendar table thead {
				color: blueviolet;
			}
			.Calendar table tr {
				height: 90px;
			}
			.Calendar table td {
				border: 1px solid blue;
				font-size: 11px;
				padding: 1px;
			}
			.Calendar table tr.tou {
				height: 40px;
				text-align: center;
			}
			#idCalendarPre {
				cursor: pointer;
				float: left;
				padding-right: 5px;
			}
			#toyear {
				color: green;
				font-size: 29px;
				text-align: center;
				padding-bottom: 15px;
			}
			#idCalendarNext {
				cursor: pointer;
				float: right;
				padding-right: 5px;
			}
			#idCalendar {
				margin-top: 50px;
			}
			#idCalendar td.onToday {
				//今天的颜色
				font-weight: bold;
				color: red;
			}
			#idCalendar td.onSelect {
				//要选择的颜色
				font-weight: bold;
				color: blue;
			}
			.AAA{
				background-color: green;
			}
		</style>
		<div class="Calendar">
			<div id="idCalendarPre">&lt;&lt;</div>
			<div id="idCalendarNext">&gt;&gt;</div>
			<div id="toyear"><span id="idCalendarYear">2008</span>年 <span id="idCalendarMonth">8</span>月</div>
			<table border="1px" cellpadding="0" cellspacing="0">
				<thead>
					<tr class="tou">
						<td class="AAA">星期日</td>
						<td>星期一</td>
						<td>星期二</td>
						<td>星期三</td>
						<td>星期四</td>
						<td>星期五</td>
						<td>星期六</td>
					</tr>
				</thead>
				<tbody id="idCalendar">
				</tbody>
			</table>
		</div>
		<script language="JavaScript">
			var cale = new Calendar("idCalendar", {
				SelectDay: new Date().setDate(10), //要选择的日期,可注释
				//			    onSelectDay: function(o){ o.className = "onSelect"; },   //增加 类
				onToday: function(o) {
					o.className = "onToday";
				},
				onFinish: function() {
					$$("idCalendarYear").innerHTML = this.Year;
					$$("idCalendarMonth").innerHTML = this.Month; //表头年份
					// 		            var flag = [10,15,20];     //判断选择是不是指定日期
					//			        for(var i = 0, len = flag.length; i < len; i++){
					//			            this.Days[flag[i]].innerHTML = "<a href='javascript:void(0);' onclick=\"alert('日期是:"+this.Year+"/"+this.Month+"/"+flag[i]+"');return false;\">" + flag[i] + "</a>";
					//			        }
				}
			});
			$$("idCalendarPre").onclick = function() {
                cale.PreMonth();
            }
            $$("idCalendarNext").onclick = function() {
                    cale.NextMonth();
                }
                //点击表格里面的值
            var tb = document.getElementById('idCalendar');
            tb.onclick = function(e) {
                //              alert(e.target.innerHTML);     //输出鼠标所点击的格子里面的值
                //               alert(typeof e.target.innerHTML);    //看一下输出是什么类型
                if (e.target.innerHTML == "&nbsp;") alert('空');
                if (e.target.innerHTML !== "&nbsp;")  {
                    var num=e.target.innerText;
                    alert(e.target.innerHTML+":"+e.target.nodeName);
                    //遍历表格
                      var arr=new Array();
                     for(var i=0;i<tb.rows.length;i++)
                     {
                        for(var j=0;j<tb.rows[i].cells.length;j++)
                        {
                            if(num==tb.rows[i].cells[j].innerText)
                            {
                                alert(true);
                            }

                        }
                     }

                }

            }

        </SCRIPT>
    </body>

</html>
时间: 2024-10-15 09:43:00

手把手教你做html日历的相关文章

大牛手把手教你做web版日历(建议你看看,你会有收获的)

下载地址:http://download.csdn.net/detail/cometwo/9373082 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>示例</title> <script type="text/javascript" src="http://apps.bdimg.com/libs/jq

大牛手把手教你做日历(建议你看看,你会有收获的)

<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>示例</title> <script type="text/javascript" src="jquery-1.9.1.min.js"></script> <script type="text/javascript

手把手教你做超酷的条形码效果

声明: 这篇文章教你在web页面上实现条形码效果,体现的是利用网页制作技术综合解决问题的思路.旨在使对HTML, JavaScript,PhotoShop具有入门级水平的人巩固入门级水平. 若有问题不能及时回复,麻烦请担待,不胜感激. 高手免进. 制作条形码总共分几步? 第一步,把冰箱门儿打开--使用PhotoShop绘制小图片 我们需要制作出一个含有16个元素的条形码图片. 首先打开Photoshop,本篇教程中使用的是CS 简体中文 版本,仅就本教程所涉及的方面来看,操作都大同小异,只要认真

手把手教你做像素图片

  像素风格是某些艺术家的最爱,也是很多80后同学的游戏印象.今天分享一个简单实用的像素画教程,教你绘制个性十足的像素小人和蓝色房间,过程很细致,新手也能学会,学完还可以绘制专属自己的像素风大头像,点完赞不要忘记学习呦! 如果你小时候特别喜欢玩乐高(或者直到你长大了也还在玩乐高),那么你也有可能喜欢等角像素图[也就是常见的45度上帝视角像素图-];它很有技术含量,而且给人感觉更接近于建造而非绘制,因为这种图没有透视,你可以把你的元素移动到任何你喜欢的等角投影环境中. 我们首先会创建一个角色,这是

手把手教你做超酷的条形码效果第1/3页_javascript技巧

原创作品,转载请注明出处By dknt From bbs.blueidea.com声明:1.这篇文章教你在web页面上实现条形码效果,体现的是利用网页制作技术综合解决问题的思路.旨在使对HTML, JavaScript,PhotoShop具有入门级水平的人巩固入门级水平.2.若有问题不能及时回复,麻烦请担待,不胜感激.3.高手免进. 制作条形码总共分几步? 第一步,把冰箱门儿打开--使用PhotoShop绘制小图片 我们需要制作出一个含有16个元素的条形码图片. 首先打开Photoshop,本篇

手把手教你做SP 日赚500不难

中介交易 SEO诊断 淘宝客 云主机 技术大厅 自己做SP也有好长时候了,总想写点什么,又懒于没时间,朋友总叫我教他方法,今天就写个方法送给他,希望有所成就.方法是死的,人是活的,要灵活运用,给大家总结分享一下! 技巧: 1.注意事项:空间和域名.为了不必要的麻烦,空间一定要是国外空间,域名全部假资料,或者用国外域名.空间要稳定快速的,不限制IIS并发数,因为释放流量的时候在线的人数非常多,这个很重要,开始的时候老因为自己的空间不稳定,一下子可以访问一下子就不行,浪费了很多分数.速度也影响到访问

手把手教你做SP 网赚不再难

SP证就是<移动网增值业务经营许可证>为适应市场发展及管理需要,信息产业部依据<中华人民共和国电信条例>(国务院令第 291号)第八条规定的授权,适时对<电信业务分类目录>(以下简称<目录>)进行调整.现行<目录>于2003年4月1日起实施. 移动网增值电信业务的接入专项是指建立与移动网络直接连接的服务平台,为移动网增值电信业务的业务专项经营者提供接入移动网络的服务,定位服务等各种增值服务的业务.(包括内容服务.娱乐.游戏.短信.彩信,WAP.铃

PS手把手教你做苹果WWDC2014 风格海报

  今年WWDC的海报刚刚出炉,就有同学想要教程了.可能熟悉的同学知道Photoshop里有个彩色半调,但是是圆的,那么海报上面 的圆角矩形的是怎么弄的呢?今天@hs到被狗追 同学找到了办法,而且教程没有想象的那么难,更不需要代码··· 好了正式开始··· 0. 先随便找个Apple 的 Logo到Ps; 1. 然后选中它的选区.在按ctrl+shift+i反选,再shift+f6羽化差不多16px. 2. 新建一个图层alt+delete 填充随便什么色; 像这样: 3. 导出png到Ai,选

黑帽警长:手把手教你做国外网赚lead 月入3万很容易

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 大家好,我是黑帽警长,从事互联网工作已经4年多了,从刚开始做到现在可以说走的是很艰难,从刚开始的三个月艰难的赚10刀到现在能带领自己的团队一起做cps,cpc,cpa.实现年收入百 万,本来我不做lead的,但是近来收的徒弟一再要求讲lead,同时在7月1号前,我会在我的博客上亮下我的学员做了5天的收款图,绝对每个人都能超过100刀,欢迎大家