222
发新话题
打印

简单的JS日历代码

简单的JS日历代码

复制内容到剪贴板
代码:
<html xmlns="http://www.w3.org/1999/xhtml">
        <head>
       
        <style>
                       
                        #selectMY td{ width:50%; }
                        #yearS_D { position:absolute width:100px; height:200px; }
                        #yearS_D td{ border:2px #000000 solid; background:#CCCCCC; }
                        #monthS_D { position:absolute; border:2px #000000 solid; background:#CCCCCC; }
                        .table { width:280px; border:1px #000000 solid; text-align:center;}
                        .table td{ width:30px; height:16px; }
                        input{
                                border:1px solid blue;
                                background:transparent;
                                }
                </style>
        </head>
        <body>
        <hr>
            单击文本框:<input type="text" onclick="calendar.initialize(this)" onblur="" />
        </body>
复制内容到剪贴板
代码:
<script>
                var calendar = {
                        _obj: null,
                        _$: function(id){
                                return document.getElementById(id);
                        },
                        dateObj: function(){
                                var y = arguments[0];
                                var m = arguments[1];
                                var d = arguments[2];
                                switch(arguments.length){
                                        case 0:
                                        case 1:
                                                return new Date();
                                        case 2:
                                                return new Date(y, m, 0);
                                        case 3:
                                                return new Date(y, m, d);
                                        default:
                                                return false;
                                }
                        },
                       
                        time: function(y,m,d){
                                return{
                                        year: this.dateObj(y,m,d).getFullYear(),
                                        month: this.dateObj(y,m,d).getMonth(),
                                        day: this.dateObj(y,m,d).getDay(),
                                        date: this.dateObj(y,m,d).getDate()
                                }
                        },
                        month: function(y,m,d){
                                return this.dateObj(y,m,d).getMonth();
                        },
                       
                        calendarCon: function(y,m,d,type){
                                var dateX = new Array()
                               
                                if(this.time(y,m,d).day !=0){
                                        for(var i=0;i<this.time(y,m,d).day;i++){
                                                dateX[i] = '';
                                        }
                                }
                                //alertthis.time(2008,4,1).month);
                                //alert(this.time(y,m,d).month);
                                //lert(this.time(y,m,d).day);
                               
                                var date = new Array(this.time(y,m+1,d-1).month);
                                for(var i=0; i<this.time(y,m+1,d-1).date; i++){
                                        date[i] = i+1;
                                }
                                //alert(date);
                               
                                var calendar = dateX.concat(date);
                                var num = 0;
                                var calendarConn = '<table class="table">';
                                for(var i=0;i<Math.ceil(calendar.length/7);i++){
                                        calendarConn += '<tr>';
                                        for(var ii=0; ii<7;ii++){
                                                if(typeof calendar[num] == 'undefined'){
                                                        calendar[num] = '';
                                                }
                                                if(calendar[num] == ''){
                                                        calendarConn += '<td>'+calendar[num]+'</td>';
                                                }else{
                                                        calendarConn += '<td onclick="calendar.nDay(this.innerHTML)">'+calendar

[num]+'</td>';
                                                }
                                                num++;
                                        }
                                        calendarConn += '</tr>';
                                }
                                calendarConn += '</table>';
                                if(type == 'update'){
                                        this._$('calendarConn').innerHTML = this.calendarCon(y,m,1);
                                }else{
                                        return calendarConn;
                                }
                        },
                       
                        calendarFrame: function(y,m,d){
                                var dateX = new Array()
                               
                                if(this.time(y,m,d).day !=0){
                                        for(var i=0;i<this.time(y,m,d).day;i++){
                                                dateX[i] = '';
                                        }
                                }

                                /*  时间  */
                                var date = new Array(this.time(y,m,d).month);
                               
                                for(var i=0; i<date.length; i++){
                                        date[i] = i+1
                                }
                               
                                // 所在日历数组
                                var calendar = dateX.concat(date);
                                var num = 0;
                               
                                calendarCon = '<table class="table" class="table">';
                                calendarCon += '<thead><tr id="selectMY"><td colspan="3"><span id="year" onclick="calendar.yearS

()"></span></td><td colspan="4"><span  id="month" onclick="calendar.monthS()"></span></td></tr></table>';
                                calendarCon += '<table class="table"><tr><td>日</td><td>一</td><td>二</td><td>三</td><td>四

</td><td>五</td><td>六</td></tr></table>';
                                calendarCon += '</table><div id="calendarConn"></div></div>';
                                return calendarCon;
                        },
                        monthS: function(){
                                if(this._$('monthS_D') != null){
                                        document.body.removeChild($('monthS_D'));
                                }else{
                                        var monthS_D = document.createElement('div');
                                        monthS_D.id = 'monthS_D'
                                        document.body.appendChild(monthS_D);
                                        if(this._$('yearS_D') != null){
                                                document.body.removeChild(this._$('yearS_D'));
                                        }
                                        monthS_D.style.position='absolute';
                                        monthS_D.style.top = this._$('calendarhtml').offsetTop +

this._$('selectMY').offsetHeight+'px';
                                        monthS_D.style.left = this._$('calendarhtml').offsetLeft +

this._$('month').parentNode.offsetLeft + this._$('month').offsetLeft+'px';
                                        var m = '<table>'
                                        for(var i=0; i<12; i++){
                                                m += '<tr><td onclick="calendar.nMonth(this.innerHTML)">'+(i+1)+'月</td></tr>'
                                        }
                                        m+='</table>';
                                        monthS_D.innerHTML = m;
                                }
                        },
                        yearS: function(){
                                if(this._$('yearS_D') != null){
                                        document.body.removeChild(this._$('yearS_D'));
                                }else{
                                        var yearS_D = document.createElement('div');
                                        yearS_D.id = 'yearS_D'
                                        document.body.appendChild(yearS_D);
                                        if(this._$('monthS_D') != null){
                                                document.body.removeChild(this._$('monthS_D'));
                                        }
                                        yearS_D.style.position='absolute';
                                       
                                        yearS_D.style.top = this._$('calendarhtml').offsetTop +

this._$('selectMY').offsetHeight+'px';
                                       
                                       
                                        yearS_D.style.left = this._$('calendarhtml').offsetLeft +

this._$('year').offsetLeft+3+'px';
                                        nowY = this.dateObj().getFullYear();;
                                        beY = nowY-50;
                                        afY = nowY+50;
                                        yX = afY-beY;
                                        arrY = new Array(yX);
                                        for(var i=0; i<yX; i++){
                                                arrY[i] = (nowY - yX/2 + i);
                                        }
                                        years = '<table><tr>';
                                        var num = 0
                                        for(var i=0;i<yX/10; i++){
                                                years += '<td>';
                                                for(var ii=0;ii<yX/(yX/10);ii++){
                                                        years += '<div onclick="calendar.nYear(this.innerHTML)">'+arrY[num]

+'</div>';
                                                        num++
                                                }
                                                years += '</td>';
                                        }
                                        years += '</tr></table>';
                                        yearS_D.innerHTML = years;
                                }
                        },
                       
                        nYear: function(innerHTML){
                                this._$('year').innerHTML = innerHTML+'年';
                                this.calendarCon(innerHTML,parseInt(this._$('month').innerHTML)-1,1,'update');
                                document.body.removeChild(this._$('yearS_D'));
                        },
                        nMonth: function(innerHTML){
                                this._$('month').innerHTML = parseInt(innerHTML)+'月';
                                this.calendarCon(parseInt(this._$('year').innerHTML),parseInt(innerHTML)-1,1,'update');
                                document.body.removeChild(this._$('monthS_D'));
                        },
                        nDay: function(innerHTML){
                                this.obj.value = (this._$('year').innerHTML+' '+this._$('month').innerHTML+' '+innerHTML+'日');
                                document.body.removeChild(this._$('calendarhtml'));
                        },
                        initialize: function(obj){
                                if(this._$('calendarhtml') != null){
                                        return;
                                }
                                this.obj = obj;
                                var y = this.dateObj().getFullYear();
                                var m = this.dateObj().getMonth();
                                var calendar = document.createElement('div');
                                document.body.appendChild(calendar);
                                calendar.id = 'calendarhtml';
                                this._$('calendarhtml').style.position = 'absolute';
                                this._$('calendarhtml').style.left = obj.offsetLeft + 'px';
                                this._$('calendarhtml').style.top = obj.offsetTop+obj.offsetHeight+'px';
                               
                                calendar.innerHTML = this.calendarFrame(y,m,1);
                                this._$('calendarConn').innerHTML = this.calendarCon(y,m,1);
                                this._$('year').innerHTML = this.time(y,m,0).year+'年';
                                this._$('month').innerHTML = this.time(y,m,0).month+2+'月';
                        }
                }
        </script>
</html>
宝剑锋从磨砺出
梅花香自苦寒来

TOP

试了,不管用!
本来不穷,自从做了站长以后就越来越穷,就成了现在的贫穷站长!

TOP

不可能,我测试好的
可以呀
我把元件打包传上来吧
你在试试 newDate.rar (2.04 KB)
宝剑锋从磨砺出
梅花香自苦寒来

TOP

我来一试。。。
hostmonster
好好活着,做有意义的事!

TOP

测试的结果如何
做好站 !  做好站 !
一个代表决心,一个代表质量!

TOP

发新话题