请指点一下一个js问题
我现在想一个问题 我当前选中的日期如果大于今天的日期 我就不设置a链接 如果小于当前的日期就有a链接,如何实现啊?
- JScript code
var $id = 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 = $id(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(); }, //上年 PreYear: function() { //取得上月日期对象 var d = new Date(this.Year, this.Month - 2, 1); //设置属性 this.Year = d.getFullYear()-1; //重绘日历 this.Draw(); }, //下年 NextYear: function() { var d = new Date(this.Year, this.Month, 1); this.Year = d.getFullYear()+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(" "); } //用当月最后一天在一个月中的日期值作为当月的天数 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"); //星期 for(var i = 1; i <= 7; i++){ var cell = document.createElement("td"); var a = document.createElement("a"); var alink = cell.appendChild(a); alink.innerHTML = " "; if(arr.length > 0){ var d = arr.shift(); alink.innerHTML = d; if(d > 0){ this.Days[d] = alink; var on = new Date(this.Year, this.Month - 1, d); //判断是否今日 if(this.IsSame(on, new Date())){ a.setAttribute("href",d); } //判断是否选择日期 if(this.SelectDay && this.IsSame(on, this.SelectDay)){ //this.onSelectDay(alink); a.setAttribute("href",d); } } } 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()); } };
[解决办法]
对比GMT时间值应该比较方便...
[解决办法]
最好不要这样写,如果这样,你的日期插件就不通用了。
设置一个callBack,就是点击日期后,执行这个function,在这个function内判断是否需要进行某些操作。
[解决办法]
最好别取客户端的时间去比较,客户端时间是可以用户自己修改的。