//根据年、月插入日历
function Make_Calendar(Year, Month) { 
var First_Date = new Date(Year, Month, 1);  //根据年、月获取该月第一天(a)的日期形式
// var Heading = Header(Year, Month);  //获取抬头,及该年份2月的天数
var First_Day = First_Date.getDay() + 1;  //获取a是星期几:1(星期日) 到 7(星期六)
  
   var today = new Date();
  
//组合日期到HTML代码
var dayflag = First_Day; //当前星期(换行标记)  
var reHtml = ""; //返回的HTML代码

var daysofmonth = MyCalendar_get_daysofmonth(Year); for(var i=1;i<=daysofmonth[Month];i++)
{
if(dayflag%7==1) reHtml += "<tr align=\"center\" valign=\"middle\">"; //如果当前为星期天,则前面加起始行号
reHtml += "<td width=\"40\" height=\"25\" onMouseOver=\"dateSelectOnMouseEvent(this)\" onMouseOut=\"dateSelectOnMouseEvent(this)\" onClick=\"dateSelectOnMouseEvent(this)\" style=\"cursor:Hand;";
   if((Year==today.getFullYear())&&(Month==today.getMonth())&&(i==today.getDate())) reHtml += "font-weight: bolder;color: #FF0000;";
reHtml += "\">" + i;
   reHtml += "</td>";
   if(dayflag%7==0) reHtml += "</tr>"; //如果当前为星期六,则后面加结束行号
  
      dayflag++;
   }
  
//补齐显示的天数
if(First_Day != 1)
  { //向前一月补
   var tempstr = "";
   var tempmonth = (Month - 1)>0?(Month - 1):0;
   var tempint = daysofmonth[tempmonth] - 0;
   for(var j=First_Date.getDay();j>0;j--)
   {
   tempstr = "<td width=\"40\" height=\"25\" onMouseOver=\"dateSelectOnMouseEvent(this)\" onMouseOut=\"dateSelectOnMouseEvent(this)\" onClick=\"dateSelectOnMouseEvent(this,'-')\" style=\"cursor:Hand\"><font color=\"blue\">" + tempint + "</font></td>" + tempstr;
   tempint--;
   }
     reHtml = "<tr align=\"center\" valign=\"middle\">" + tempstr + reHtml;
}
dayflag--; if(dayflag%7 != 0)
{ //向下一个月补
  var tempstr = "";
   var tempint = 7 - dayflag%7;
   for(var k=1;k<=tempint;k++)
   {
   tempstr += "<td width=\"40\" height=\"25\" onMouseOver=\"dateSelectOnMouseEvent(this)\" onMouseOut=\"dateSelectOnMouseEvent(this)\" onClick=\"dateSelectOnMouseEvent(this,'+')\" style=\"cursor:Hand\"><font color=\"blue\">" + k + "</font></td>";
   }
     reHtml = reHtml + tempstr + "</tr>";
}
  
reHtml = "<table STYLE=\"border-collapse: separate\"; border=\"1\" cellspacing=\"0\" cellpadding=\"3\" bordercolor=\"#000000\" bordercolordark=\"#ffffff\" bordercolorlight=\"#000000\" class=\"dateSelectTextSize\">" + reHtml + "</table>"; dataSelectDaySelectList.innerHTML = reHtml;
document.all.dateSelectYear.value = Year;
document.all.dateSelectMonth.value = (Month<9?"0"+(Month+1):(Month+1)+"");
} //日期单元格的鼠标事件响应
function dateSelectOnMouseEvent(ele,tp)
{
if(event.type=="mouseover")
{ //鼠标悬停
ele.style.backgroundColor = "#EEEEEE";
}else if(event.type=="mouseout"){ //鼠标移开
ele.style.backgroundColor = "";
}else if(event.type=="click"){
if(tp=="+") SkipBy("+",1);
else if(tp=="-") SkipBy("-",1);
else getSelectTime(ele);
}
}//向前、向后翻指定个月份
function SkipBy(Direction,nub) { 

var Selected_Year = document.all.dateSelectYear.value - 0;
var Selected_Month = document.all.dateSelectMonth.value - 0 - 1;

for(var i=0;i<nub;i++)
{

if (Direction == '+') 

if (Selected_Month == 11) 

Selected_Month = 0; 
Selected_Year++; 
}else { 
Selected_Month++; 

}else { 
if (Selected_Month == 0) 

Selected_Month = 11; 
Selected_Year--; 
}else { 
Selected_Month--; 


   document.all.dateSelectYear.value = Selected_Year;
document.all.dateSelectMonth.value = Selected_Month + 1;
}
Make_Calendar(Selected_Year, Selected_Month); 
} //根据输入的年份改变显示的日历
function changeYear(tp) {  var Year = document.all.dateSelectYear.value; 
if(tp=="+")
{ //后翻一年
Make_Calendar(Year - 0 + 1, document.all.dateSelectMonth.value - 0 -1); 
}else if(tp=="-"){
//前翻一年
Make_Calendar(Year - 0 - 1, document.all.dateSelectMonth.value - 0 -1); 
}else{
//文本框输入
if(Year.length < 4)
{
   alert("请输入完整的年份!");
   document.all.dateSelectYear.focus();
document.all.dateSelectYear.select();
return;
}else if(Year.length == 4) {     
Make_Calendar(Year - 0, document.all.dateSelectMonth.value - 0 -1); 

}
return false;

解决方案 »

  1.   


    //显示日历
    function riliShow() { 
    /*
    tp:标志 0-显示时间 1-不显示时间
    obj: 目标对象
    params:参数,可以是数组或字符串(用于存放输入框内的信息,从而弹出窗口将显示该信息,不然显示的为当前日期)
    字符串时以 “-” 进行分割
    dstop:window.event.y
    dsleft:window.event.x
    */

    tp = arguments[0];
    obj = arguments[1];
    params = arguments[2];
    dstop = arguments[3];
    dsleft = arguments[4];

    if(obj!=null){
    this.myObj = obj;
    }
    if(document.all.dateSelectDiv.style.visibility == "hidden")
    {
    var today = new Date();
    var showTop,showLeft;
    if(dstop==null) showTop = window.event.y + document.body.scrollTop ; 
    else showTop = dstop - 0;
    if(dsleft==null) showLeft = window.event.x + document.body.scrollLeft - 200;
    else showLeft = dsleft - 0;
    document.all.dateSelectDiv.style.left = showLeft; 
    document.all.dateSelectDiv.style.top = showTop;  
    document.all.dateSelectDiv.style.visibility = "visible";

    if(tp==1)
    {
    dateSelectInputTime.style.display = "none";
    }else{
    dateSelectInputTime.style.display = "";
    } if(params==null)
    {
    /*
    document.all.dateSelectHour.value = (today.getHours()<10?"0"+today.getHours():today.getHours()+"");
    var myMinutes = (today.getMinutes()<10?"0"+today.getMinutes():today.getMinutes()+"");
    var tp = document.getElementById("dateSelectMinute");
    myMinutes = (myMinutes - myMinutes%5);
    var ep = (myMinutes<10?"0"+myMinutes:myMinutes+"");
    tp.value = ep;
    */
    document.all.dateSelectHour.value = (today.getHours()<10?"0"+today.getHours():today.getHours()+"");
    document.all.dateSelectMinute.value = (today.getMinutes()<10?"0"+today.getMinutes():today.getMinutes()+"");
    document.all.dateSelectSecond.value = (today.getSeconds()<10?"0"+today.getSeconds():today.getSeconds()+"");

    Make_Calendar(today.getFullYear(),today.getMonth());
    }else if(params.constructor==Array){
    //alert("Array\n"+params)
    var tyear,tmonth,tdate,thour,tminute,tsecond;
    if(params.length>0)
    {
    if(params[0].length==4) tyear = params[0] - 0;
    else tyear = today.getFullYear();
    }
    if(params.length>1){
    if(params[1].length==2) tmonth = params[1] - 0 - 1;
    else tmonth = today.getMonth();
    }
    if(params.length>2){
    if(params[2].length==2) tdate = params[2] - 0;
    else tdate = today.getDate();
    }
    if(params.length>3){
    if(params[3].length==2) thour = params[3] - 0;
    else thour = today.getHours();
    }
    if(params.length>4){
    if(params[4].length==2) tminute = params[4] - 0;
    else tminute = today.getMinutes();
    }
    if(params.length>5){
    if(params[5].length==2) tsecond = params[5] - 0;
    else tsecond = today.getSeconds();
    }
    //设置小时
    var tp = document.getElementById("dateSelectHour");
    var ep = (thour<10?"0"+thour:thour+"");
    tp.value = ep;
    //设置分钟
    tp = document.getElementById("dateSelectMinute");
    //tminute = (tminute - tminute%5);
    ep = (tminute<10?"0"+tminute:tminute+"");
    tp.value = ep;

    //设置秒
    tp = document.getElementById("dateSelectSecond");
    //tsecond = (tsecond - tsecond%5);
    ep = (tsecond<10?"0"+tsecond:tsecond+"");
    tp.value = ep;

    Make_Calendar(tyear,tmonth);
    }else if(params.constructor==String){
    //alert("String\n"+params)
    var tpa = params.split("-");
    var tyear,tmonth,tdate,thour,tminute;
    if(tpa.length>0)
    {
    if(tpa[0].length==4) tyear = tpa[0] - 0;
    else tyear = today.getFullYear();
    }else tyear = today.getFullYear();
    if(tpa.length>1){
    if(tpa[1].length==2|tpa[1].length==1) tmonth = tpa[1] - 0 - 1;
    else tmonth = today.getMonth();
    }else tmonth = today.getMonth();
    if(tpa.length>2){
    if(tpa[2].length==2|tpa[2].length==1) tdate = tpa[2] - 0;
    else tdate = today.getDate();
    }else tdate = today.getDate();
    if(tpa.length>3){
    if(tpa[3].length==2|tpa[3].length==1) thour = tpa[3] - 0;
    else thour = today.getHours();
    }else thour = today.getHours();
    if(tpa.length>4){
    if(tpa[4].length==2|tpa[4].length==2) tminute = tpa[4] - 0;
    else tminute = today.getMinutes();
    }else tminute = today.getMinutes();
    if(tpa.length>5){
    if(tpa[5].length==2|tpa[5].length==2) tsecond = tpa[5] - 0;
    else tsecond = today.getSeconds();
    }else tsecond = today.getSeconds();

    var tp = document.getElementById("dateSelectHour");
    var ep = (thour<10?"0"+thour:thour+"");
    tp.value = ep;

    tp = document.getElementById("dateSelectMinute");
    //tminute = (tminute - tminute%5);
    ep = (tminute<10?"0"+tminute:tminute+"");
    tp.value = ep;

    tp = document.getElementById("dateSelectSecond");
    //tsecond = (tsecond - tsecond%5);
    ep = (tsecond<10?"0"+tsecond:tsecond+"");
    tp.value = ep;

    Make_Calendar(tyear,tmonth);
    }
    }else{
    document.all.dateSelectDiv.style.visibility = "hidden";
    }

      

  2.   


    //获取选取的时间
    function getSelectTime(ele)
    { setSelectTime(ele);
    if( this.myObj.getAttribute("isWin")!=null && this.myObj.getAttribute("isWin")=="true"){
    returnValue = myObj.value;
    window.close();
    }
    else{
    document.all.dateSelectDiv.style.visibility = "hidden";
    }
    }//缺省的设置时间
    function setSelectTime(ele){ var year = document.all.dateSelectYear.value;
    var year_2 = new String(year.substr(2,2)); //两位年
    var month = document.all.dateSelectMonth.value;
    var day = (ele.innerHTML.length<2?"0"+ele.innerHTML:ele.innerHTML);
    var tp = document.getElementById("dateSelectHour");
    var hour = tp.value;

    tp = document.getElementById("dateSelectMinute");
    var minute = tp.value;

    tp = document.getElementById("dateSelectSecond");
    var second = tp.value;

    dateformat = this.myObj.getAttribute("dateformat"); switch (dateformat) {
    case "YYYY-MM-DD HH:MI:SS" :
    vData =  year + "-" + month + "-" + day + " "+hour+":"+minute+":"+second;
    break;
    case "YYYY-MM-DD HH:MI" :
    vData =  year + "-" + month + "-" + day + " "+hour+":"+minute;
    break;
    case "YYYY-MM-DD" :
    vData =  year + "-" + month + "-" + day;
    break;
    case "YYYY-MM" :
    vData =  year + "-" + month;
    break;

    case "YYYY" :
    vData =  year;
    break;
    case "YYYYMM" :
    vData = year+ month;
    break;
    case "YYYYMMDD" :
    vData = year+ month + day;
    break;
    case "YYYYMMDD HH:MI" :
    vData = year+ month + day+ " "+hour+":"+minute;
    break;
    case "YYYYMMDD HH:MI:SS" :
    vData = year+ month + day+ " "+hour+":"+minute+":"+second;
    break;

    case "MM-DD-YYYY HH:MI:SS" :
    vData = month + "-" + day + "-" + year+ " "+hour+":"+minute+":"+second;
    break;
    case "MM-DD-YYYY" :
    vData = month + "-" + day + "-" + year;
    break; case "DD-MM-YYYY HH:MI:SS" :
    vData = day + "-" + month + "-" + year+ " "+hour+":"+minute+":"+second;
    break;
    case "DD-MM-YYYY" :
    vData = day + "-" + month + "-" + year;
    break; default :
    vData =  year + "-" + vMonth + "-" + day;
    }
    myObj.value=vData;
    }function closeDateSelectDiv()
    {
    document.all.dateSelectDiv.style.visibility = "hidden";
    }//校验年份
    function yearChecked(ele)
    {
    var temp = ele.value;
    if(temp=="")
    {
    alert("请输入年份!");
    ele.focus();
    ele.select();
    return;
    }
    if(temp.length!=4)
    {
    alert("请输入4位数字的年份!");
    ele.focus();
    ele.select();
    return;
    }
    var ep = temp.match(/\D/g);
    if(ep!=null)
    {
    alert("输入的年份应为正整数!");
    ele.focus();
    ele.select();
    return;
    }
    changeYear();
    }
    function beginDrag(elementToDrag,event)  { return;
    //计算元素原左上角与鼠标的距离
    //moveHandler要这值 var delatX=event.clientX-parseInt(elementToDrag.style.left);
    var delatY=event.clientY-parseInt(elementToDrag.style.top); //注册响应mousemove和mousedown事件后的mouseup事件的处理程序 if(document.addEventListener) {  //2级DOM事件模型
    //注册捕捉事件处理程序。
    document.addEventListener("mousemove",moveHandler,true);
    document.addEventListener("mouseup",upHandler,true);
    }
    else if(document.attachEvent) { //IE5+ 的事件模型
    //在IE事件模型中,我们不能捕捉事件,所以只有当事件起泡到这些处理程序时,
    //它们才被触发. 假设不存在干涉元素, 处理了事件后它们就停止传播
    document.attachEvent("onmousemove",moveHandler);
    document.attachEvent("onmouseup",upHandler);
    }
    else { //IE4事件模型
    //IE4我们不能使用attachEvent方法,所以存储了以前赋予的处理
    //程序后,直接赋予新的事件处理程序,这样可以恢复旧的处理程序.
    //注意,这样依赖于事件起泡.
    var oldmovehandler=document.onmousemove;
    var olduphandler=document.onmouseup;
    document.onmousemove=moveHandler;
    document.onmouseup=upHandler;
    } //我们处理了该事件,不要再让其他元素看见.
    if(event.stopPropagation) event.stopPropagation(); //2 级DOM
    else event.cancelBubble=true; //IE

    //下面禁止执行默认动作
    if(event.preventDefault) event.preventDefault();  //2级DOM
    else event.returnValue=false; //IE /*  这是元素被拖动时捕捉mousemove事件的处理程序.
     *  它负责移动元素
     */

    function moveHandler(e)  {
    if(!e) e=window.event; //IE事件模型;
    //把元素移动到鼠标当前的位置,根据初始鼠标点击的偏移量进行调整
    elementToDrag.style.left=(e.clientX-delatX)+"px";
    elementToDrag.style.top=(e.clientY-delatY)+"px";
    //不要再让其他元素看到该事件.
    if(e.stopPropagation) e.stopPropagation();  //2级DOM
    else e.cancelBubble=true; //IE
    } /*  这是捕捉拖移结束最后发生的mouseup事件的处理程序.
     */
    function upHandler(e) {
    if(!e) e=window.event; //IE事件模型.
    //注销捕捉事件程序.
    if(document.removeEventListener) { //DOM事件模型
    document.removeEventListener("mouseup",upHandler,true);
    document.removeEventListener("mousemove",moveHandler,true);
    }
    else if(document.detachEvent) { //IE5+ 事件模型
    document.detachEvent("onmouseup",upHandler);
    document.detachEvent("onmousemove",moveHandler);
    }
    else  { //IE事件模型
    document.onmouseup=olduphandler;
    document.onousemove=oldmovehandler;
    }
    //不要再让事件进一步传播.
    if(e.stopPropagation) e.stopPropagation();  //2级DOM
    else e.cancelBubble=true; //IE
       }
    }
      

  3.   

    我运行起来有错误的?===============================
        CSDN小助手 是一款脱离浏览器也可以使用csdn论坛的
    软件!
        界面: http://qqwwee.com/
        下载: http://qqwwee.com/csdn.rar 包含源代码