liquiior 2021-11-11 14:00 采纳率: 66.7%
浏览 57
已结题

js写一个日历,想要在一页里放两个日历

加了一行document.write之后日历上左右翻页的功能就不行了,显示undefined

<style type="text/css">
.body, td{
font-family:"Arial";
font-size:8pt;
color:#000000;
}
.TrOut{
border-left:1px solid #f4f4f4; border-right:1px solid #999999; border-top:1px solid #f4f4f4; border-bottom:1px solid #999999; background:#dddddd; height:26;

}
.TdOver{
border-left:1px solid #9c9c9c; border-right:1px solid #ffffff; border-top:1px solid #9c9c9c; border-bottom:1px solid #ffffff; background:#eeeeee; height:20;

}
.TdOut{
border-left:1px solid #ffffff; border-right:1px solid #9c9c9c; border-top:1px solid #ffffff; border-bottom:1px solid #9c9c9c; background:#eeeeee; height:20;

}
</style>
<script language="JScript">
/*********************************************************
                迷你绽?.0版本

如果下列代码发现bug请联系 Flashsoft2000@hotmail.com

函数 TableFunction 提供以下方法和属性:

1.GetDateStr()
返回指定年月的日期的数组,包括空字符.
参数:
y是指年
m是指月
调用方式:TableFunction().GetDateStr(Year,Month)

2.GetTableStr()
返回指定年月的已经格式化了的表格
参数:
y是指年
m是指月
调用方式:TableFunction().GetTableStr(Year,Month)

3.WriteSelect()
返回年月的选择框
参数:
obj是指需要加入选择框的容器
values是指需要加亮的项目
action是指参数,带入参数y表示是年选择框,带入参数m表示月选择框
getobj是指在哪个控件上触发的事件,其中true为非当前选择框触发
而false则为当前选择框触发
调用方式:TableFunction().WriteSelect(obj,values,action,getobj)

4.RewriteTableStr()
复位重写表格中的日期
参数:
y是指年
m是指月
调用方式:TableFunction().RewriteTableStr(Year,Month)

5.JumpToRun()
左右控制表格中的月变化
参数:
action表示日历是前进还是后退
调用方式:TableFunction().JumpToRun(action)

6.AlertDay()
提示当前点击的位置的日期
参数:
无
调用方式:TableFunction().AlertDay()
*********************************************************/
function TableFunction(){
        this.GetDateStr=function(y,m){
                this.DayArray=[];
                for(var i=0;i<42;i++)this.DayArray[i]=" ";
                for(var i=0;i<new Date(y,m,0).getDate();i++)this.DayArray[i+new Date(y,m-1,1).getDay()]=i+1;
                return this.DayArray;
                }
        this.GetDateStr=function(y,m){
                this.DayArray=[];
                for(var i=0;i<42;i++)this.DayArray[i]=" ";
                for(var i=0;i<new Date(y,m,0).getDate();i++)this.DayArray[i+new Date(y,m-1,1).getDay()]=i+1;
                return this.DayArray;
                }
        this.GetTableStr=function(y,m){
                this.DateArray=["日","一","二","三","四","五","六"];
                this.DStr="<table oncontextmenu='return false' onselectstart='return false' style='width:160;cursor:default;border:1 solid #9c9c9c;border-right:0;border-bottom:0;filter:progid:dximagetransform.microsoft.dropshadow(color=#e3e3e3,offx=3,offy=3,positive=true)' border='0' cellpadding='0' cellspacing='0'>\n"+
                "<tr><td colspan='7' class='TrOut'>"+
                "<table width='100%' height='100%'border='0' cellpadding='0' cellspacing='0'><tr align='center'>\n"+
                "<td width='20' style='font-family:\"webdings\";font-size:9pt' onclick='TableFunction().JumpToRun(\"b\")' onmouseover='this.style.color=\"#ff9900\"' onmouseout='this.style.color=\"\"'>3</td>\n"+
                "<td class='YearTD' width='70' onmouseover='this.style.background=\"#cccccc\"' onmouseout='this.style.background=\"\"' onclick='TableFunction().WriteSelect(this,this.innerText.split(\" \")[0],\"y\",false)'>"+y+" 年</td>\n"+
                "<td class='MonthTD' width='47' onmouseover='this.style.background=\"#cccccc\"' onmouseout='this.style.background=\"\"' onclick='TableFunction().WriteSelect(this,this.innerText.split(\" \")[0],\"m\",false)'>"+m+" 月</td>\n"+
                "<td width='20' style='font-family:\"webdings\";font-size:9pt' onclick='TableFunction().JumpToRun(\"n\")' onmouseover='this.style.color=\"#ff9900\"' onmouseout='this.style.color=\"\"'>4</td></tr></table>\n"+
                "</td></tr>\n"+
                "<tr align='center'>\n";
                for(var i=0;i<7;i++)
                this.DStr+="<td class='TrOut'>"+DateArray[i]+"</td>\n";
                this.DStr+="</tr>\n";
                for(var i=0;i<6;i++){
                this.DStr+="<tr align='center'>\n";
                for(var j=0;j<7;j++){
                        var CS=new Date().getDate()==this.GetDateStr(y,m)[i*7+j]?"TdOver":"TdOut";
                        this.DStr+="<td id='TD' class='"+CS+"' cs='"+CS+"' onmouseover='this.className=\"TdOver\"' onmouseout='if(this.cs!=\"TdOver\")this.className=\"TdOut\"' onclick='TableFunction().AlertDay()'>"+this.GetDateStr(y,m)[i*7+j]+"</td>\n";
                        }
                this.DStr+="</tr>\n";
                }
                this.DStr+="</tabe>";
                return this.DStr;
                }
        this.WriteSelect=function(obj,values,action,getobj){
                if(values=="")return;
                if(getobj){
                        obj.innerHTML=values+(action=="y"?" 年":" 月");
                        this.RewriteTableStr(YearTD.innerText.split(" ")[0],MonthTD.innerText.split(" ")[0]);
                        return false;
                        }
                var StrArray=[];
                if(action=="y"){
                        for(var i=0;i<15;i++){
                                var year=values-7+i;
                                StrArray[i]="<option value='"+year+"' "+(values==year?"selected":"")+"> "+year+"年</option>\n";
                                }
                        obj.innerHTML="<select id='select1' style='width:67' onchange='TableFunction().WriteSelect(parentElement,this.value,\"y\",true)' onblur='YearTD.innerText=this.value+\" 年\"'>\n"+StrArray.join("")+"</select>";
                        select1.focus();
                        }
                if(action=="m"){
                        for(var i=1;i<13;i++)
                                StrArray[i]="<option value='"+i+"' "+(i==values?"selected":"")+"> "+i+"月</option>\n";
                        obj.innerHTML="<select id='select2' style='width:47' onchange='TableFunction().WriteSelect(parentElement,this.value,\"m\",true)' onblur='MonthTD.innerText=this.value+\" 月\"'>\n"+StrArray.join("")+"</select>";
                        select2.focus();
                        }
                }
        this.RewriteTableStr=function(y,m){
                var TArray=this.GetDateStr(y,m);
                var len=TArray.length;
                for(var i=0;i<len;i++){
                        TD[i].innerHTML=TArray[i];
                        TD[i].className="TdOut";
                        TD[i].cs="TdOut";
                        if(new Date().getYear()==y&&new Date().getMonth()+1==m&&new Date().getDate()==TArray[i]){
                                TD[i].className="TdOver";
                                TD[i].cs="TdOver";
                                }
                        }
                }
        this.JumpToRun=function(action){
                console.log(document.getElementsByClassName("YearTD")[0].innerText);
                var YearNO=YearTD.innerText.split(' ')[0];
                var MonthNO=MonthTD.innerText.split(' ')[0];
                if(action=="b"){
                        if(MonthNO=="1"){
                                MonthNO=13;
                                YearNO=YearNO-1;
                                }
                        MonthTD.innerText=MonthNO-1+" 月";
                        YearTD.innerText=YearNO+" 年";
                        this.RewriteTableStr(YearNO,MonthNO-1);
                        }
                if(action=="n"){
                        if(MonthNO=="12"){
                                MonthNO=0;
                                YearNO=YearNO-(-1);
                                }
                        YearTD.innerText=YearNO+" 年";
                        MonthTD.innerText=MonthNO-(-1)+" 月";
                        this.RewriteTableStr(YearNO,MonthNO-(-1));
                        }
                }
        this.AlertDay=function(){
                if(event.srcElement.innerText!=" ")
                alert(YearTD.innerText.split(' ')[0]+"年"+MonthTD.innerText.split(' ')[0]+"月"+event.srcElement.innerText+"日");
                }
        return this;
        }
document.write(TableFunction().GetTableStr(new Date().getFullYear(),new Date().getMonth()+1));
</script>


  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 11月19日
    • 修改了问题 11月11日
    • 修改了问题 11月11日
    • 请详细说明问题背景 11月11日
    • 展开全部

    悬赏问题

    • ¥15 关于#Java#的问题,如何解决?
    • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
    • ¥15 想问一下树莓派接上显示屏后出现如图所示画面,是什么问题导致的
    • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
    • ¥15 cmd cl 0x000007b
    • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
    • ¥500 火焰左右视图、视差(基于双目相机)
    • ¥100 set_link_state
    • ¥15 虚幻5 UE美术毛发渲染
    • ¥15 CVRP 图论 物流运输优化