this.help = function(wObj) {           // 在wObj窗口(缺省:在新窗口)显示帮助页面
                  if (wObj == null) {
                        var attrString = "top=0,left=10,width=800,height=500,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes";
                        wObj = window.open("", "", attrString);
                  }
                  with (wObj.document) {
                        open("text/html");
                        writeln("<HTML>");
                        writeln("<HEAD>");
                        writeln("<title>说明</title>");
                        writeln("<style>");
                        writeln("<!--");
                        writeln("td   {font-face:宋体;font-size:12px;line-height:12px;letter-spacing:0px;margin-top:0px;}");
                        writeln(".tit {COLOR:#ffffff;backGround-color:#999933;font-face:宋体;font-size:12px;text-align:center;font-weight:bold}");
                        writeln("-->");
                        writeln("</style>");
                        writeln("</HEAD>");
                        writeln("<BODY topmargin='0' leftmargin='0' marginheight='0' marginwidth='0'>");
                        writeln("<table border='1' cellpadding='3' cellspacing='0'>");
                        writeln("<tr><td colspan=3 class=tit>建立日历的方法</td></tr>");
                        writeln("<tr><td nowrap><b>1、var myWebCalendar = WebCalendar(objName);</b></td><td colspan=2>首先建立一个日历处理对象</td></tr>");
                        writeln("<tr><td></td><td colspan=2>其中,objName是赋予该对象的名。以便此后可通过“document.objName”来调用之。</td></tr>");
                        writeln("<tr><td align=right>它有如下只读属性:</td><td>name</td><td>日历对象名。字母、数字、下划线,不可间空</td></tr>");
                        writeln("<tr><td></td><td>webCalendar</td><td>已画的日历</td></tr>");
                        writeln("<tr><td align=right>它有如下方法:</td><td>Parameter()</td><td>建立日历的参数集对象</td></tr>");
                        writeln("<tr><td></td><td>help(wObj)</td><td>在wObj窗口(缺省:在新窗口)显示帮助页面</td></tr>");
                        writeln("<tr><td></td><td>open(d)</td><td>打开(显示)日历</td></tr>");
                        writeln("<tr><td></td><td>close()</td><td>关闭(不显示)日历</td></tr>");
                        writeln("<tr><td></td><td>reset(p)</td><td>重置日历</td></tr>");
                        writeln("<tr><td></td><td>draw(p, putObj)</td><td>画出日历(其中,p:日历的参数集。putObj:放置日历的目标元素)</td></tr>");
                        writeln("<tr><td nowrap><b>2、var p = new myWebCalendar.Parameter();</b></td><td colspan=2>然后,为所画日历建立一个参数集对象</td></tr>");
                        writeln("<tr><td align=right>参数集对象有如下属性:</td><td>yearOffset  = 20;</td><td>年下拉框中,年的上下偏移值</td></tr>");
                        writeln("<tr><td></td><td>minYear = 1000;</td><td>最小年份</td></tr>");
                        writeln("<tr><td></td><td>maxYear = 9999;</td><td>最大年份</td></tr>");
                        writeln("<tr><td></td><td>seperator = '.';</td><td>输入年月日的分隔字符</td></tr>");
                        writeln("<tr><td></td><td>dateFormater = 'yyyy年mm月dd日';</td><td>返回的日期格式(y:2位年;m:月;d:日。y、m、d:1个时,为原值;否则,有几位就高位补0到几位)</td></tr>");
                        writeln("<tr><td></td><td>allowMove    = true;</td><td>日历可移动否</td></tr>");
                        writeln("<tr><td></td><td>fontFamily    = '宋体,Verdana';</td><td>字体库</td></tr>");
                        writeln("<tr><td></td><td>fontSize      = 12;</td><td>字体大小</td></tr>");
                        writeln("<tr><td></td><td>headBgColor   = '#686C7E';</td><td>年月行的背景颜色</td></tr>");
                        writeln("<tr><td></td><td>headColor     = '#ffffff';</td><td>年月行的文字颜色</td></tr>");
                        writeln("<tr><td></td><td>weekBgColor   = '#E0DFE4';</td><td>星期的背景颜色</td></tr>");
                        writeln("<tr><td></td><td>weekColor     = '#000000';</td><td>星期的文字颜色</td></tr>");
                        writeln("<tr><td></td><td>wordColor     = '#000000';</td><td>文字颜色</td></tr>");
                        writeln("<tr><td></td><td>dayBgColor    = '#f6f6f6';</td><td>日期数字背景色</td></tr>");
                        writeln("<tr><td></td><td>wordDark      = '#777777';</td><td>非当月日期的暗色</td></tr>");
                        writeln("<tr><td></td><td>todayBgColor  = '#00ddff';</td><td>今天在日历上的背景色</td></tr>");
                        writeln("<tr><td></td><td>oldDayBgColor = '#00dd00';</td><td>输入日期在日历上的背景色</td></tr>");
                        writeln("<tr><td></td><td>darkBorder    = '#686C7C';</td><td>外框左右边线的立体表达色</td></tr>");
                        writeln("<tr><td></td><td>gridBorder    = '#aaaaaa';</td><td>栅格线的颜色</td></tr>");
                        writeln("<tr><td></td><td>setupColor    = '#ff0000';</td><td>鼠标置上时的日期颜色</td></tr>");
                        writeln("<tr><td></td><td>setupBgColor  = '#dddddd';</td><td>鼠标置上时的日期背景颜色</td></tr>");
                        writeln("<tr><td align=right>及方法:</td><td>test()</td><td>检查参数是否正确</td></tr>");
                        writeln("<tr><td nowrap><b>3、myWebCalendar.draw(p, putObj);</b></td><td colspan=2>接着,利用所建参数集对象画出日历</td></tr>");
                        writeln("<tr><td align=right>日历有如下属性:</td><td>eventSrc</td><td>获取日历的触发控件</td></tr>");
                        writeln("<tr><td></td><td>parameter</td><td>日历的参数集</td></tr>");
                        writeln("<tr><td></td><td>frameWindow</td><td>日历的 iframe 载体</td></tr>");
                        writeln("<tr><td align=right>及方法:</td><td>open(d)</td><td>打开(显示)日历</td></tr>");
                        writeln("<tr><td></td><td>close()</td><td>关闭(不显示)日历</td></tr>");
                        writeln("<tr><td></td><td>reset(p)</td><td>重置日历</td></tr>");
                        writeln("</TABLE>");
                        writeln("</BODY></HTML>");
                        close();
                  }
                  wObj.focus();
            }

解决方案 »

  1.   

    this.Parameter = function() {             // 日历参数集
                      this.yearOffset  = 20;                // 定义年下拉框的年的上下偏移值
                      this.minYear = 1000;                  // 最小年份
                      this.maxYear = 9999;                  // 最大年份
                      this.seperator = '.';                 // myDays中,年月日的分隔字符
                      this.dateFormater = 'yyyy.mm.dd';     // 返回的日期格式(y:2位年;m:月;d:日。y、m、d:1个时,为原值;否则,有几位就高位补0到几位)
                      this.allowMove    = true;             // 日历可移动否
                      this.fontFamily    = "宋体,Verdana";  // 字体库
                      this.fontSize      = 12;              // 字体大小
                      this.headBgColor   = "#686C7E";       // 年月行的背景颜色。如:#f6f6f6
                      this.headColor     = "#ffffff";       // 年月行的文字颜色。如:#000000
                      this.weekBgColor   = "#E0DFE4";       // 星期的背景颜色。如:#E0DFE4
                      this.weekColor     = "#000000";       // 星期的文字颜色。如:#000000
                      this.wordColor     = "#000000";       // 文字颜色。如:#000000
                      this.dayBgColor    = "#f6f6f6";       // 日期数字背景色。如:#f6f6f6
                      this.wordDark      = "#777777";       // 非当月日期的暗色。如:#777777
                      this.todayBgColor  = "#00ddff";       // 今天在日历上的背景色。如:#00ddff
                      this.oldDayBgColor = "#00dd00";       // 输入日期在日历上的背景色。如:#00dd00
                      this.darkBorder    = "#686C7C";       // 外框左右边线的立体表达色。如:#686C7C
                      this.gridBorder    = "#aaaaaa";       // 栅格线的颜色。如:#777777
                      this.setupColor    = "#ff0000";       // 鼠标置上时的日期颜色
                      this.setupBgColor  = "#dddddd";       // 鼠标置上时的日期背景颜色
                      this.test = function() {             // 检查参数
                            return true;
                      }
                      return this;
                }
                this.draw = function(p, putObj) {  // 画日历。p:日历的参数集。putObj:放置日历的目标元素。空:则document.write;否则putObj.innerHTML=
                      if (this.webCalendar != null) {alert("日历已经画过了"); return;}
                      if (p == null) {p = new this.Parameter();}
                      if (!p.test()) {return;}                        // 如果参数检查未通过
                      var objID = "WebCalendar_" + this.name;
                      var objName1 = "document." + this.name;
                      var objName2 = "document.all." + objID;
                      var str = "";
                      str += "<div id='" + objID + "' style='position:absolute; top:20; left:20; width:150; height:200; display:none'>";
                      str += "<iframe id='" + objID + "_frame' name='" + objID + "_frame' scrolling=no frameborder=0 width='100%' height='100%'></iframe>";
                      str += "</div>";
                      if (putObj) {putObj.innerHTML = str;}
                      else {document.writeln(str);}                  str  = "<HTML>\n";
                      str += "<HEAD>\n";
                      str += "<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>\n";
                      str += "<TITLE>日历<\/TITLE>\n";
                      str += "<sc"+"ript language=javascript>\n";
                      str += "<!--\n";
                      str += "var yearOffset    = "  + p.yearOffset    + ";  // 定义年下拉框的年的上下偏移值\n";
                      str += "var minYear       = "  + p.minYear       + ";  // 最小年份\n";
                      str += "var maxYear       = "  + p.maxYear       + ";  // 最大年份\n";
                      str += "var seperator     = '" + p.seperator     + "'; // myDays中,年月日的分隔字符\n";
                      str += "var dateFormater  = '" + p.dateFormater  + "'; // 返回的日期格式(y:2位年;m:月;d:日。y、m、d:1个时,为原值;否则,有几位就高位补0到几位)\n";
                      str += "var allowMove     = "  + p.allowMove     + ";  // 日历可移动否\n";
                      str += "var wordColor     = '" + p.wordColor     + "'; // 文字颜色\n";
                      str += "var wordDark      = '" + p.wordDark      + "'; // 非当月日期的暗色\n";
                      str += "var dayBgColor    = '" + p.dayBgColor    + "'; // 日期数字背景色\n";
                      str += "var todayBgColor  = '" + p.todayBgColor  + "'; // 今天在日历上的背景色\n";
                      str += "var oldDayBgColor = '" + p.oldDayBgColor + "'; // 输入日期在日历上的背景色\n";
                      str += "var setupColor    = '" + p.setupColor    + "'; // 鼠标置上时的日期颜色\n";
                      str += "var setupBgColor  = '" + p.setupBgColor  + "'; // 鼠标置上时的日期背景颜色\n";
                      str += "var inputDate    = '';   // 输入原值(其格式为:yyyy.mm.dd。其中的'.'取自参数集合的seperator)\n";
                      str += "var currentYear  = " + (new Date().getYear()) + ";\n";
                      str += "var currentMonth = " + (new Date().getMonth()+1) + ";\n";
                      str += "var isMove = false, oldX = 0, oldY = 0, parentObj;\n";
                      str += "var myDays = new Array(40);    // 定义日历展示用的数组(保存6周的日期)\n";
      

  2.   

    str += "function createYearSelect(y) {     // 年份的下拉框\n"
                                       + "      if (y==null || y=='' || isNaN(y)) {y = new Date().getYear();}\n"
                                       + "      y = (y<=minYear ? minYear : (y>=maxYear? maxYear : y));\n"
                                       + "      var minY = y - yearOffset;\n"
                                       + "      var maxY = y + yearOffset;\n"
                                       + "      minY = (minY<=minYear ? minYear : minY);\n"
                                       + "      maxY = (maxY>=maxYear ? maxYear : maxY);\n"
                                       + "      for (var i=yearSelect.options.length-1; i>=0; i--) {yearSelect.options.remove(i);}\n"
                                       + "      var objOption;\n"
                                       + "      for (var i=minY; i<=maxY; i++) {\n"
                                       + "            objOption = new Option(i +'年', i);"
                                       + "            yearSelect.options[yearSelect.options.length] = objOption;\n"
                                       + "      }\n"
                                       + "      yearSelect.style.display = 'block';\n"
                                       + "      yearSelect.value = y;\n"
                                       + "      parentObj = parent.document." + this.name + ".webCalendar;\n"
                                       + "      parentObj.style.left = parseInt(parentObj.style.left)+1;\n"
    //                                   + "      parentObj.style.left = parseInt(parentObj.style.left)-1;\n"
                                       + "      yearSelect.focus();\n"
                                       + "}\n";
                      str += "function createMonthSelect(m) {      // 月份的下拉框\n"
                                       + "      if (m==null || m=='' || isNaN(m)) {m = new Date().getMonth() + 1;}\n"
                                       + "      monthSelect.style.display = 'block';\n"
                                       + "      monthSelect.value = m;\n"
                                       + "      parentObj = parent.document." + this.name + ".webCalendar;\n"
                                       + "      parentObj.style.left = parseInt(parentObj.style.left)+1;\n"
                                       + "      var w1 = parseInt(document.all.calendarTable.offsetWidth, 10);\n"
                                       + "      var w2 = parseInt(document.all.monthSelect.offsetWidth, 10);\n"
                                       + "      monthSelect.style.left = w1 - w2 - 2;\n"
                                       + "      parentObj.style.left = parseInt(parentObj.style.left)-1;\n"
                                       + "      monthSelect.focus();\n"
                                       + "}\n";
                      str += "function yearChange(obj) {\n"
                                       + "      currentYear = parseInt(obj.value, 10);\n"
                                       + "      obj.style.display = 'none';\n"
                                       + "      resetDays();\n"
                                       + "}\n";
                      str += "function monthChange(obj) {\n"
                                       + "      currentMonth = parseInt(obj.value, 10);\n"
                                       + "      obj.style.display = 'none';\n"
                                       + "      resetDays();\n"
                                       + "}\n";
                      str += "function previousYear() {\n"
                                       + "      if (currentYear > minYear) {currentYear--;}\n"
                                       + "      else {alert('已到达最小年份');}\n"
                                       + "      resetDays();\n"
                                       + "}\n";
                      str += "function nextYear() {\n"
                                       + "      if (currentYear < maxYear) {currentYear++;}\n"
                                       + "      else {alert('已到达最大年份');}\n"
                                       + "      resetDays();\n"
                                       + "}\n";
                      str += "function previousMonth() {\n"
                                       + "      if (currentMonth > 1) {\n"
                                       + "            currentMonth--;\n"
                                       + "            resetDays();\n"
                                       + "      }\n"
                                       + "      else {if (currentYear > minYear) {\n"
                                       + "                  currentYear--;\n"
                                       + "                  currentMonth = 12;\n"
                                       + "                  resetDays();\n"
                                       + "            }\n"
                                       + "            else {alert('已到达最小年份');}\n"
                                       + "      }\n"
                                       + "}\n";
                      str += "function nextMonth() {\n"
                                       + "      if (currentMonth < 12) {\n"
                                       + "            currentMonth++;\n"
                                       + "            resetDays();\n"
                                       + "      }\n"
                                       + "      else {if (currentYear < maxYear) {\n"
                                       + "                  currentYear++;\n"
                                       + "                  currentMonth = 1;\n"
                                       + "                  resetDays();\n"
                                       + "            }\n"
                                       + "            else {alert('已到达最大年份');}\n"
                                       + "      }\n"
                                       + "}\n";
      

  3.   

    http://expert.csdn.net/Expert/topic/2680/2680270.xml?temp=.2024042
    另一半在这儿