JS 更新删除一行

本文介绍了一个JavaScript脚本,用于实现网页表格的添加新行和编辑行功能。通过使用DOM操作来复制表格行,并实现了行编辑模式的切换。此外,还提供了一个包含这些脚本的HTML页面示例。

//SystemManger.js

Code:
  1. //获取当前控件所在的行   
  2. function getParent(src, tagName) {   
  3.     var par = src.parentElement;   
  4.     while (par.tagName.toLowerCase() != tagName) {   
  5.         par = par.parentElement;   
  6.     }   
  7.     return par;   
  8. }   
  9. //添加行   
  10. function AddNewRow(src) {   
  11.     var table = getParent(src, "table")   
  12.     var lastRow = table.rows[table.rows.length - 2];   
  13.     var newRow = table.insertRow(table.rows.length - 2);   
  14.     var cellsLength = lastRow.cells.length;   
  15.     var sIndex = 0;   
  16.     while (sIndex < cellsLength) {   
  17.         var newCell = newRow.insertCell();   
  18.         newCell.innerHTML = lastRow.cells[sIndex].innerHTML;   
  19.         if (sIndex == 0) {   
  20.             newCell.innerText = newRow.rowIndex;   
  21.         }   
  22.         sIndex++;   
  23.     }   
  24.     newRow.isNew = true;   
  25.     setRowOperEnable(newRow, false);   
  26. }   
  27. //编辑行   
  28. function SetEditModel(src, isEdit, isCancel) {   
  29.     var row = getParent(src, "tr");   
  30.     var cellsLength = row.cells.length;   
  31.     var startLength = 1;   
  32.     while (startLength < cellsLength - 1) {   
  33.         var cell = row.cells[startLength];   
  34.         if (isEdit) {   
  35.             cell.children[0].style.display = "none";   
  36.             cell.children[1].style.removeAttribute("display");   
  37.             if (cell.children[1].tagName.toLowerCase() != "select") {   
  38.                 cell.children[1].value = cell.children[0].innerHTML;   
  39.             }   
  40.             else {   
  41.                 var ops = cell.children[1].options;   
  42.                 for (var i = 0; i < ops.length; i++) {   
  43.                     var tempValue = ops[i].value;   
  44.                     if (tempValue == cell.children[0].innerHTML) {   
  45.                         ops[i].selected = true;   
  46.                     }   
  47.                 }   
  48.             }   
  49.         }   
  50.         else {   
  51.             cell.children[1].style.display = "none";   
  52.             cell.children[0].style.removeAttribute("display");   
  53.             if (!isCancel) {   
  54.                 cell.children[0].innerHTML = cell.children[1].value;   
  55.             }   
  56.         }   
  57.         startLength++;   
  58.     }   
  59.     var operCell = row.cells[cellsLength - 1];   
  60.     var srcText = src.innerText;   
  61.     var aLength = operCell.children.length;   
  62.     var astart = 0;   
  63.     if (row.isNew && srcText == "取消") {   
  64.         var table = getParent(src, "table");   
  65.         table.deleteRow(row.rowIndex);   
  66.         setRowOperEnable(table.rows[0], true);   
  67.         return;   
  68.     }   
  69.     if (row.isNew && srcText == "更新") {   
  70.         row.isNew = false;   
  71.     }   
  72.     if (srcText == "修改") {   
  73.         setRowOperEnable(row, false);   
  74.     }   
  75.     if (srcText == "更新" || srcText == "取消") {   
  76.         setRowOperEnable(row, true);   
  77.     }   
  78.     while (astart < aLength) {   
  79.         var child = operCell.children[astart];   
  80.         var childText = child.innerText;   
  81.         if (srcText == "修改") {   
  82.             if (childText == "修改" || childText == "删除") {   
  83.                 child.style.display = "none";   
  84.             }   
  85.             else {   
  86.                 child.style.removeAttribute("display");   
  87.             }   
  88.         }   
  89.         if (srcText == "更新" || srcText == "取消") {   
  90.             if (childText == "更新" || childText == "取消") {   
  91.                 child.style.display = "none";   
  92.             }   
  93.             else {   
  94.                 child.style.removeAttribute("display");   
  95.             }   
  96.         }   
  97.         astart++;   
  98.     }   
  99. }   
  100. //删除行   
  101. function deleteRow(src) {   
  102.     if (confirm('确认删除?')) {   
  103.         var row = getParent(src, "tr");   
  104.         var table = getParent(src, "table");   
  105.         table.deleteRow(row.rowIndex);   
  106.         setRowIndex(table);   
  107.         return true;   
  108.     }   
  109.     else {   
  110.         return false;   
  111.     }   
  112.   
  113. }   
  114. //设置行号   
  115. function setRowIndex(table) {   
  116.     var rows = table.rows;   
  117.     var sIndex = 1;   
  118.     var end = table.rows.length - 2;   
  119.     while (sIndex < end) {   
  120.         table.rows[sIndex].cells[0].innerText = sIndex.toString();   
  121.         sIndex++;   
  122.     }   
  123. }   
  124. function setRowOperEnable(row, enable) {   
  125.     var table = getParent(row, "table");   
  126.     var rowLength = table.rows.length;   
  127.     var cellLength = table.rows[0].cells.length;   
  128.     if (enable) {   
  129.         table.rows[rowLength - 1].cells[1].removeAttribute("disabled");   
  130.     }   
  131.     else {   
  132.         table.rows[rowLength - 1].cells[1].setAttribute("disabled""disabled");   
  133.     }   
  134.     var sIndex = 1;   
  135.     var end = rowLength - 2;   
  136.     while (sIndex < end) {   
  137.         if (sIndex != row.rowIndex) {   
  138.             if (enable) {   
  139.                 table.rows[sIndex].cells[cellLength - 1].removeAttribute("disabled");   
  140.             }   
  141.             else {   
  142.                 table.rows[sIndex].cells[cellLength - 1].setAttribute("disabled""disabled");   
  143.             }   
  144.         }   
  145.         sIndex++;   
  146.     }   
  147. }  

//test.htm

Code:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  2. <html xmlns="http://www.w3.org/1999/xhtml">  
  3. <head>  
  4.     <title>部门</title>  
  5.   
  6.   
  7.     <script type="text/javascript" src="SystemManage.js"></script>  
  8.   
  9. </head>  
  10. <body>  
  11.     <div id="WapperDiv" style="float: left; background-color: White;">  
  12.         <table id="LayoutTable" cellpadding="0px" cellspacing="0px" style="width: auto; height: auto;">  
  13.             <tr id="TopTr">  
  14.                   
  15.             </tr>  
  16.             <tr id="CenterTr">  
  17.                 <td >  
  18.                 </td>  
  19.                 <td >  
  20.                     <div class="DocumentTitleDiv">  
  21.                         <label id="DocumentTitleLabel">  
  22.                             部门</label>  
  23.                     </div>  
  24.                     <div align="center">  
  25.                         <table>  
  26.                             <tr>  
  27.                                 <td>  
  28.                                     <label>  
  29.                                         部门名称</label>  
  30.                                     <input id="DepartmentName" type="text" class="SearchTextBox" />  
  31.                                 </td>  
  32.                                 <td>  
  33.                                 </td>  
  34.                                 <td>  
  35.                                     <input id="SearchButton" type="button" value="查询" class="button" />  
  36.                                 </td>  
  37.                                 <td>  
  38.                                 </td>  
  39.                             </tr>  
  40.                         </table>  
  41.                         <table id="departmenttable"  border ="1" cellspacing="0px" cellpadding="0px"  
  42.                             rules="none">  
  43.                             <thead>  
  44.                                 <tr >  
  45.                                     <th style="width: 33px;">  
  46.                                         序号   
  47.                                     </th>  
  48.                                     <th style="width: 81px;">  
  49.                                         部门名称   
  50.                                     </th>  
  51.                                     <th style="width: 81px;">  
  52.                                         电话   
  53.                                     </th>  
  54.                                     <th style="width: 81px;">  
  55.                                         联系人   
  56.                                     </th>  
  57.                                     <th style="width: 97px;">  
  58.                                         操作   
  59.                                     </th>  
  60.                                 </tr>  
  61.                             </thead>  
  62.                             <tr>  
  63.                                 <td>  
  64.                                     1   
  65.                                 </td>  
  66.                                 <td>  
  67.                                     <label>  
  68.                                         物资供应科</label>  
  69.                                     <input type="text" style="display: none"  />  
  70.                                 </td>  
  71.                                 <td>  
  72.                                     <label>  
  73.                                     </label>  
  74.                                     <input type="text" style="display: none"  />  
  75.                                 </td>  
  76.                                 <td>  
  77.                                     <label>  
  78.                                     </label>  
  79.                                     <input type="text" style="display: none"  />  
  80.                                 </td>  
  81.                                 <td>  
  82.                                     <a href="javascript:void(0);" onclick="SetEditModel(this,1)">修改</a> <a href="javascript:void(0);" onclick="return deleteRow(this);">  
  83.                                         删除</a> <a href="javascript:void(0);" style="display: none;" onclick="SetEditModel(this,0)">  
  84.                                             更新</a> <a href="javascript:void(0);" style="display: none;" onclick="SetEditModel(this,0,1)">  
  85.                                                 取消</a>  
  86.                                 </td>  
  87.                             </tr>  
  88.                             <tr style="display: none;">  
  89.                                 <td>  
  90.                                 </td>  
  91.                                 <td>  
  92.                                     <label style="display: none">  
  93.                                     </label>  
  94.                                     <input type="text"  />  
  95.                                 </td>  
  96.                                 <td>  
  97.                                     <label style="display: none">  
  98.                                     </label>  
  99.                                     <input type="text"  />  
  100.                                 </td>  
  101.                                 <td>  
  102.                                     <label style="display: none">  
  103.                                     </label>  
  104.                                     <input type="text"  />  
  105.                                 </td>  
  106.                                 <td>  
  107.                                     <a href="javascript:void(0);" style="display: none;" onclick="SetEditModel(this,1)">  
  108.                                         修改</a> <a href="javascript:void(0);" style="display: none;" onclick="return deleteRow(this);">删除</a> <a href="javascript:void(0);"  
  109.                                             onclick="SetEditModel(this,0)">更新</a> <a href="javascript:void(0);" onclick="SetEditModel(this,0,1)">  
  110.                                                 取消</a>  
  111.                                 </td>  
  112.                             </tr>  
  113.                             <tfoot>  
  114.                                 <tr>  
  115.                                     <td colspan="4" align="right" style="border-right: none;">  
  116.                                     </td>  
  117.                                     <td style="border-left: none;">  
  118.                                         <a href="javascript:void(0);" onclick="AddNewRow(this)">添加</a>  
  119.                                     </td>  
  120.                                 </tr>  
  121.                             </tfoot>  
  122.                         </table>  
  123.                     </div>  
  124.                 </td>  
  125.                 <td class="td3">  
  126.                 </td>  
  127.             </tr>  
  128.             <tr id="BottomTr">  
  129.                    
  130.             </tr>  
  131.             <tr>  
  132.                   
  133.             </tr>  
  134.         </table>  
  135.     </div>  
  136. </body>  
  137. </html>  

 calendar.js

Code:
  1. <!--   
  2. /* 调用方法:  
  3.   <input onfocus="calendar()" name="s2" type="text" id="s2" style="width:100%;" />  
  4.   <input id="Button4" type="button" value="不同意" onclick ="return reject(this.document.getElementById('TextArea1').innerText, this.document.getElementById('Button4').value)"/>  
  5. */  
  6. var cal_Width = 180;//定义日历显示的宽度,至少140   
  7.   
  8. document.write("<div id='meizzCalendarLayer' style='position: absolute; z-index: 9999; width: " + (cal_Width+4).toString() + "px; height: 193px; display: none'>");   
  9. document.write("<iframe name='meizzCalendarIframe' scrolling='no' frameborder='0' width='100%' height='100%'></iframe></div>");   
  10. var WebCalendar = new WebCalendar();   
  11.   
  12. function document.onclick()   
  13. {   
  14.     if(WebCalendar.eventSrc != window.event.srcElement) hiddenCalendar();   
  15. }   
  16.   
  17. function WebCalendar() //初始化日历的设置   
  18. {   
  19.     this.regInfo    = "WEB Calendar ver 3.0 关闭的快捷键:[Esc]";   
  20.        
  21.     this.dayShow    = 38;                       //定义页面上要显示的天数,不能小于35,或大于39   
  22.     this.daysMonth  = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);   
  23.     this.day        = new Array(this.dayShow);            //定义日历展示用的数组   
  24.     this.dayObj     = new Array(this.dayShow);            //定义日期展示控件数组   
  25.     this.dateStyle  = null;                     //保存格式化后日期数组   
  26.     this.objExport  = null;                     //日历回传的显示控件   
  27.     this.eventSrc   = null;                     //日历显示的触发控件   
  28.     this.inputDate  = null;                     //转化外的输入的日期(d/m/yyyy)   
  29.     this.thisYear   = new Date().getFullYear(); //定义年的变量的初始值   
  30.     this.thisMonth  = new Date().getMonth()+ 1; //定义月的变量的初始值   
  31.     this.thisDay    = new Date().getDate();     //定义日的变量的初始值   
  32.     this.today      = this.thisDay +"/"this.thisMonth +"/"this.thisYear;   //今天(d/m/yyyy)   
  33.     this.iframe     = window.frames("meizzCalendarIframe"); //日历的 iframe 载体   
  34.     this.calendar   = getObjectById("meizzCalendarLayer");  //日历的层   
  35.     this.dateReg    = "";           //日历格式验证的正则式   
  36.   
  37.     this.yearFall   = 50;           //定义显示的年份下拉框的年差值,如果今年是2000年,这里设置为50,就显示1950-2050   
  38.     this.format     = "yyyy-mm-dd"//回传日期的格式   
  39.     this.timeShow   = false;        //是否返回时间   
  40.     this.drag       = true;         //是否允许拖动   
  41.     this.darkColor  = "#95B7F3";    //控件的暗色   
  42.     this.lightColor = "#FFFFFF";    //控件的亮色   
  43.     this.btnBgColor = "#E6E6FA";    //控件的按钮背景色   
  44.     this.wordColor  = "#000080";    //控件的文字颜色   
  45.     this.wordDark   = "#DCDCDC";    //控件的暗文字颜色   
  46.     this.dayBgColor = "#F5F5FA";    //日期数字背景色   
  47.     this.todayColor = "#FF0000";    //今天在日历上的标示背景色   
  48.     this.DarkBorder = "#D4D0C8";    //日期显示的立体表达色   
  49.        
  50.     this.yearOption = "";   
  51.     var yearNow = new Date().getFullYear();   
  52.     yearNow = (yearNow <= 1000)? 1000 : ((yearNow >= 9999)? 9999 : yearNow);   
  53.     var yearMin = (yearNow - this.yearFall >= 1000) ? yearNow - this.yearFall : 1000;   
  54.     var yearMax = (yearNow + this.yearFall <= 9999) ? yearNow + this.yearFall : 9999;   
  55.         yearMin = (yearMax == 9999) ? yearMax-this.yearFall*2 : yearMin;   
  56.         yearMax = (yearMin == 1000) ? yearMin+this.yearFall*2 : yearMax;   
  57.     for (var i=yearMin; i<=yearMax; i++) this.yearOption += "<option value='"+i+"'>"+i+"年</option>";   
  58. }      
  59.   
  60. function writeIframe()   
  61. {   
  62.     var strIframe = "<html><head><meta http-equiv='Content-Type' content='text/html; charset=gb2312'><style>"+   
  63.     "*{font-size: 12px; font-family: 宋体}"+   
  64.     ".bg{  color: "+ WebCalendar.lightColor +"; cursor: default; background-color: "+ WebCalendar.darkColor +";}"+   
  65.     "table#tableMain{ width: "+ (cal_Width+2).toString() +"px; height: 180px;}"+   
  66.     "table#tableWeek td{ width:14%;color: "+ WebCalendar.lightColor +";}"+   
  67.     "table#tableDay  td{ width:14%;font-weight: bold;}"+   
  68.     "td#meizzYearHead, td#meizzYearMonth{color: "+ WebCalendar.wordColor +"}"+   
  69.     ".out { text-align: center; border-top: 1px solid "+ WebCalendar.DarkBorder +"; border-left: 1px solid "+ WebCalendar.DarkBorder +";"+   
  70.     "border-right: 1px solid "+ WebCalendar.lightColor +"; border-bottom: 1px solid "+ WebCalendar.lightColor +";}"+   
  71.     ".over{ text-align: center; border-top: 1px solid #FFFFFF; border-left: 1px solid #FFFFFF;"+   
  72.     "border-bottom: 1px solid "+ WebCalendar.DarkBorder +"; border-right: 1px solid "+ WebCalendar.DarkBorder +"}"+   
  73.     "input{ border: 1px solid "+ WebCalendar.darkColor +"; padding-top: 1px; height: 18px; cursor: hand;"+   
  74.     "       color:"+ WebCalendar.wordColor +"; background-color: "+ WebCalendar.btnBgColor +"}"+   
  75.     "</style></head><body onselectstart='return false' style='margin: 0px' oncontextmenu='return false'><form name=meizz>";   
  76.   
  77.     if (WebCalendar.drag){ strIframe += "<scr"+"ipt language=javascript>"+   
  78.     "var drag=false, cx=0, cy=0, o = parent.WebCalendar.calendar; function document.onmousemove(){"+   
  79.     "if(parent.WebCalendar.drag && drag){if(o.style.left=='')o.style.left=0; if(o.style.top=='')o.style.top=0;"+   
  80.     "o.style.left = parseInt(o.style.left) + window.event.clientX-cx;"+   
  81.     "o.style.top  = parseInt(o.style.top)  + window.event.clientY-cy;}}"+   
  82.     "function document.onkeydown(){ switch(window.event.keyCode){  case 27 : parent.hiddenCalendar(); break;"+   
  83.     "case 37 : parent.prevM(); break; case 38 : parent.prevY(); break; case 39 : parent.nextM(); break; case 40 : parent.nextY(); break;"+   
  84.     "case 84 : document.forms[0].today.click(); break;} " +   
  85.     "try{window.event.keyCode = 0; window.event.returnValue= false;}catch(ee){}}"+   
  86.     "function dragStart(){cx=window.event.clientX; cy=window.event.clientY; drag=true;}</scr"+"ipt>"}   
  87.   
  88.     strIframe += "<table id=tableMain class=bg border=0 cellspacing=2 cellpadding=0>"+   
  89.     "<tr><td width='"+ cal_Width +"px' height='19px' bgcolor='"+ WebCalendar.lightColor +"'>"+   
  90.     "    <table width='"+ cal_Width +"px' id='tableHead' border='0' cellspacing='1' cellpadding='0'><tr align='center'>"+   
  91.     "    <td width='10%' height='19px' class='bg' title='向前翻 1 月快捷键:←' style='cursor: hand' onclick='parent.prevM()'><b><</b></td>"+   
  92.     "    <td width='45%' id=meizzYearHead "+   
  93.     "        onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+   
  94.     "        onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'>" +    
  95.     "<select name=tmpYearSelect  onblur='parent.hiddenSelect(this)' style='width:100%;'"+   
  96.     "        onchange='parent.WebCalendar.thisYear =this.value; parent.hiddenSelect(this); parent.writeCalendar();'>";   
  97.        
  98. //    var yearNow = new Date().getFullYear();   
  99. //    yearNow = (yearNow <= 1000)? 1000 : ((yearNow >= 9999)? 9999 : yearNow);   
  100. //    var yearMin = (yearNow - WebCalendar.yearFall >= 1000) ? yearNow - WebCalendar.yearFall : 1000;   
  101. //    var yearMax = (yearNow + WebCalendar.yearFall <= 9999) ? yearNow + WebCalendar.yearFall : 9999;   
  102. //        yearMin = (yearMax == 9999) ? yearMax-WebCalendar.yearFall*2 : yearMin;   
  103. //        yearMax = (yearMin == 1000) ? yearMin+WebCalendar.yearFall*2 : yearMax;   
  104. //    for (var i=yearMin; i<=yearMax; i++) strIframe += "<option value='"+i+"'>"+i+"年</option>";   
  105.   
  106.     strIframe += WebCalendar.yearOption + "</select>"+   
  107.     "</td>"+   
  108.     "    <td width='35%' id=meizzYearMonth "+   
  109.     "        onmouseover='this.bgColor=parent.WebCalendar.darkColor; this.style.color=parent.WebCalendar.lightColor'"+   
  110.     "        onmouseout='this.bgColor=parent.WebCalendar.lightColor; this.style.color=parent.WebCalendar.wordColor'>" +   
  111.     "<select name=tmpMonthSelect onblur='parent.hiddenSelect(this)' style='width:100%;'" +       
  112.     "        onchange='parent.WebCalendar.thisMonth=this.value; parent.hiddenSelect(this); parent.writeCalendar();'>";   
  113.     for (var i=1; i<13; i++) strIframe += "<option value='"+i+"'>"+i+"月</option>";   
  114.     strIframe += "</select>"+   
  115.     "</td>"+   
  116.     "    <td width='10%' class=bg title='向后翻 1 月快捷键:→' onclick='parent.nextM()' style='cursor: hand'><b>></b></td></tr></table>"+   
  117.     "</td></tr><tr><td height='20px'>"+   
  118.     "<table id=tableWeek border=1 width='"+ cal_Width +"px' cellpadding=0 cellspacing=0 ";   
  119.     if(WebCalendar.drag){strIframe += "onmousedown='dragStart()' onmouseup='drag=false' ";}   
  120.     strIframe += " borderColorLight='"+ WebCalendar.darkColor +"' borderColorDark='"+ WebCalendar.lightColor +"'>"+   
  121.     "    <tr align=center><td height='20px'>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr></table>"+   
  122.     "</td></tr><tr><td valign=top width='"+ cal_Width +"px' bgcolor='"+ WebCalendar.lightColor +"'>"+   
  123.     "    <table id=tableDay height='120px' width='"+ cal_Width +"px' border=0 cellspacing=1 cellpadding=0>";   
  124.          for(var x=0; x<5; x++){   
  125.            strIframe += "<tr>";   
  126.            for(var y=0; y<7; y++)   
  127.              strIframe += "<td class=out id='meizzDay"+ (x*7+y) +"'></td>";    
  128.            strIframe += "</tr>";   
  129.          }   
  130.          strIframe += "<tr>";   
  131.          for(var x=35; x<WebCalendar.dayShow; x++)   
  132.            strIframe += "<td class=out id='meizzDay"+ x +"'></td>";   
  133.          strIframe +="<td colspan="+(42-WebCalendar.dayShow).toString()+" class=out style='text-align:center;' title='"+ WebCalendar.regInfo +"'>" +    
  134.          "<input style=' background-color: " + WebCalendar.btnBgColor +";cursor: hand; padding-top: 2px; width: 44%; height: 100%;' onfocus='this.blur()'"+   
  135.          " type=button value='清空' onclick='parent.WebCalendar.objExport.value=/"/";parent.hiddenCalendar()'>" +    
  136.          " " +    
  137.          "<input style=' background-color: " + WebCalendar.btnBgColor +";cursor: hand; padding-top: 2px; width: 43%; height: 100%;' onfocus='this.blur()'"+   
  138.          " type=button value='关闭' onclick='parent.hiddenCalendar()'>" +    
  139.          "</td></tr></table>"+   
  140.     "</td></tr><tr><td height='20px' width='"+ cal_Width +"px' bgcolor='"+ WebCalendar.lightColor +"'>"+   
  141.     "    <table border=0 cellpadding=1 cellspacing=0 width='"+ cal_Width +"px'>"+   
  142.     "    <tr><td><input name=prevYear title='向前翻 1 年快捷键:↑' onclick='parent.prevY()' type=button value='<<'"+   
  143.     "    onfocus='this.blur()' style='meizz:expression(this.disabled=parent.WebCalendar.thisYear==1000)'><input"+   
  144.     "    onfocus='this.blur()' name=prevMonth title='向前翻 1 月快捷键:←' onclick='parent.prevM()' type=button value='< '>"+   
  145.     "    </td><td align=center><input name=today type=button value='Today' onfocus='this.blur()' style='width: 50px;' title='当前日期快捷键:T'"+   
  146.     "    onclick=/"parent.returnDate(new Date().getDate() +'/'+ (new Date().getMonth() +1) +'/'+ new Date().getFullYear())/">"+   
  147.     "    </td><td align=right><input title='向后翻 1 月快捷键:→' name=nextMonth onclick='parent.nextM()' type=button value=' >'"+   
  148.     "    onfocus='this.blur()'><input name=nextYear title='向后翻 1 年快捷键:↓' onclick='parent.nextY()' type=button value='>>'"+   
  149.     "    onfocus='this.blur()' style='meizz:expression(this.disabled=parent.WebCalendar.thisYear==9999)'></td></tr></table>"+   
  150.     "</td></tr><table></form></body></html>";   
  151.     with(WebCalendar.iframe)   
  152.     {   
  153.         document.writeln(strIframe); document.close();   
  154.         for(var i=0; i<WebCalendar.dayShow; i++)   
  155.         {   
  156.             WebCalendar.dayObj[i] = eval("meizzDay"+ i);   
  157.             WebCalendar.dayObj[i].onmouseover = dayMouseOver;   
  158.             WebCalendar.dayObj[i].onmouseout  = dayMouseOut;   
  159.             WebCalendar.dayObj[i].onclick     = returnDate;   
  160.         }   
  161.     }   
  162. }   
  163.   
  164. function calendar() //主调函数   
  165. {   
  166.     var e = window.event.srcElement;   writeIframe();   
  167.     var o = WebCalendar.calendar.style; WebCalendar.eventSrc = e;   
  168.     if (arguments.length == 0) WebCalendar.objExport = e;   
  169.     else WebCalendar.objExport = eval(arguments[0]);   
  170.   
  171.     WebCalendar.iframe.tableWeek.style.cursor = WebCalendar.drag ? "move" : "default";   
  172.     var t = e.offsetTop,  h = e.clientHeight, l = e.offsetLeft, p = e.type;   
  173.     while (e = e.offsetParent){t += e.offsetTop; l += e.offsetLeft;}   
  174.     o.display = ""; WebCalendar.iframe.document.body.focus();   
  175.     var cw = WebCalendar.calendar.clientWidth, ch = WebCalendar.calendar.clientHeight;   
  176.     var dw = document.body.clientWidth, dl = document.body.scrollLeft, dt = document.body.scrollTop;   
  177.        
  178.     if (document.body.clientHeight + dt - t - h >= ch) o.top = (p=="image")? t + h : t + h + 6;   
  179.     else o.top  = (t - dt < ch) ? ((p=="image")? t + h : t + h + 6) : t - ch;   
  180.     if (dw + dl - l >= cw) o.left = l; else o.left = (dw >= cw) ? dw - cw + dl : dl;   
  181.   
  182.     if  (!WebCalendar.timeShow) WebCalendar.dateReg = /^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2})$/;   
  183.     else WebCalendar.dateReg = /^(/d{1,4})(-|//)(/d{1,2})/2(/d{1,2}) (/d{1,2}):(/d{1,2}):(/d{1,2})$/;   
  184.   
  185.     try{   
  186.         if (WebCalendar.objExport.value.trim() != ""){   
  187.             WebCalendar.dateStyle = WebCalendar.objExport.value.trim().match(WebCalendar.dateReg);   
  188.             if (WebCalendar.dateStyle == null)   
  189.             {   
  190.                 WebCalendar.thisYear   = new Date().getFullYear();   
  191.                 WebCalendar.thisMonth  = new Date().getMonth()+ 1;   
  192.                 WebCalendar.thisDay    = new Date().getDate();   
  193.                 alert("原文本框里的日期有错误!/n可能与你定义的显示时分秒有冲突!");   
  194.                 writeCalendar(); return false;   
  195.             }   
  196.             else  
  197.             {   
  198.                 WebCalendar.thisYear   = parseInt(WebCalendar.dateStyle[1], 10);   
  199.                 WebCalendar.thisMonth  = parseInt(WebCalendar.dateStyle[3], 10);   
  200.                 WebCalendar.thisDay    = parseInt(WebCalendar.dateStyle[4], 10);   
  201.                 WebCalendar.inputDate  = parseInt(WebCalendar.thisDay, 10) +"/"+ parseInt(WebCalendar.thisMonth, 10) +"/"+    
  202.                 parseInt(WebCalendar.thisYear, 10); writeCalendar();   
  203.             }   
  204.         } else {   
  205.           WebCalendar.thisYear   = new Date().getFullYear();   
  206.           WebCalendar.thisMonth  = new Date().getMonth()+ 1;   
  207.           WebCalendar.thisDay    = new Date().getDate();   
  208.           writeCalendar();   
  209.         }   
  210.     } catch(e) {   
  211.       WebCalendar.thisYear   = new Date().getFullYear();   
  212.       WebCalendar.thisMonth  = new Date().getMonth()+ 1;   
  213.       WebCalendar.thisDay    = new Date().getDate();   
  214.       writeCalendar();   
  215.     }   
  216. }   
  217.   
  218. function funMonthSelect() //月份的下拉框   
  219. {   
  220.     var m = isNaN(parseInt(WebCalendar.thisMonth, 10)) ? new Date().getMonth() + 1 : parseInt(WebCalendar.thisMonth);   
  221.     var e = WebCalendar.iframe.document.forms[0].tmpMonthSelect;   
  222.     e.value = m; //e.focus();    
  223.     //window.status = e.style.left;   
  224. }   
  225.   
  226. function funYearSelect() //年份的下拉框   
  227. {   
  228.     var e = WebCalendar.iframe.document.forms[0].tmpYearSelect;   
  229.     var y = isNaN(parseInt(WebCalendar.thisYear, 10)) ? new Date().getFullYear() : parseInt(WebCalendar.thisYear);   
  230.     e.value = y; //e.focus();   
  231. //    if(e.value == "")   
  232. //    {   
  233. //      e.value = new Date().getFullYear();   
  234. //      WebCalendar.thisYear = e.value;   
  235. //    }   
  236. }   
  237.   
  238. function prevM()  //往前翻月份   
  239. {   
  240.     WebCalendar.thisDay = 1;   
  241.     if (WebCalendar.thisMonth==1)   
  242.     {   
  243.         WebCalendar.thisYear--;   
  244.         WebCalendar.thisMonth=13;   
  245.     }   
  246.     WebCalendar.thisMonth--; writeCalendar();   
  247. }   
  248.   
  249. function nextM()  //往后翻月份   
  250. {   
  251.     WebCalendar.thisDay = 1;   
  252.     if (WebCalendar.thisMonth==12)   
  253.     {   
  254.         WebCalendar.thisYear++;   
  255.         WebCalendar.thisMonth=0;   
  256.     }   
  257.     WebCalendar.thisMonth++; writeCalendar();   
  258. }   
  259. function prevY(){WebCalendar.thisDay = 1; WebCalendar.thisYear--; writeCalendar();}//往前翻 Year   
  260. function nextY(){WebCalendar.thisDay = 1; WebCalendar.thisYear++; writeCalendar();}//往后翻 Year   
  261. function hiddenSelect(e){   
  262.   //for(var i=e.options.length; i>-1; i--)e.options.remove(i); e.style.display="none";   
  263. }   
  264. function getObjectById(id){ if(document.all) return(eval("document.all."+ id)); return(eval(id)); }   
  265. function hiddenCalendar(){getObjectById("meizzCalendarLayer").style.display = "none";};   
  266. function appendZero(n){return(("00"+ n).substr(("00"+ n).length-2));}//日期自动补零程序   
  267. function String.prototype.trim(){return this.replace(/(^/s*)|(/s*$)/g,"");}   
  268. function dayMouseOver()   
  269. {   
  270.     this.className = "over";   
  271.     this.style.backgroundColor = WebCalendar.darkColor;   
  272.     if(WebCalendar.day[this.id.substr(8)].split("/")[1] == WebCalendar.thisMonth)   
  273.     this.style.color = WebCalendar.lightColor;   
  274. }   
  275. function dayMouseOut()   
  276. {   
  277.     this.className = "out"var d = WebCalendar.day[this.id.substr(8)], a = d.split("/");   
  278.     this.style.removeAttribute('backgroundColor');   
  279.     if(a[1] == WebCalendar.thisMonth && d != WebCalendar.today)   
  280.     {   
  281.         if(WebCalendar.dateStyle && a[0] == parseInt(WebCalendar.dateStyle[4], 10))   
  282.         this.style.color = WebCalendar.lightColor;   
  283.         this.style.color = WebCalendar.wordColor;   
  284.     }   
  285. }   
  286. function writeCalendar() //对日历显示的数据的处理程序   
  287. {   
  288.     var y = WebCalendar.thisYear;   
  289.     var m = WebCalendar.thisMonth;    
  290.     var d = WebCalendar.thisDay;   
  291.     WebCalendar.daysMonth[1] = (0==y%4 && (y%100!=0 || y%400==0)) ? 29 : 28;   
  292.     if (!(y<=9999 && y >= 1000 && parseInt(m, 10)>0 && parseInt(m, 10)<13 && parseInt(d, 10)>0)){   
  293.         alert("对不起,你输入了错误的日期!");   
  294.         WebCalendar.thisYear   = new Date().getFullYear();   
  295.         WebCalendar.thisMonth  = new Date().getMonth()+ 1;   
  296.         WebCalendar.thisDay    = new Date().getDate(); }   
  297.     y = WebCalendar.thisYear;   
  298.     m = WebCalendar.thisMonth;   
  299.     d = WebCalendar.thisDay;   
  300.        
  301.     funYearSelect(parseInt(y, 10));   
  302.     funMonthSelect(parseInt(m,10));   
  303.     //WebCalendar.iframe.meizzYearHead.innerText  = y +" 年";   
  304.     //WebCalendar.iframe.meizzYearMonth.innerText = parseInt(m, 10) +" 月";   
  305.     WebCalendar.daysMonth[1] = (0==y%4 && (y%100!=0 || y%400==0)) ? 29 : 28; //闰年二月为29天   
  306.     var w = new Date(y, m-1, 1).getDay();   
  307.     var prevDays = m==1  ? WebCalendar.daysMonth[11] : WebCalendar.daysMonth[m-2];   
  308.     for(var i=(w-1); i>=0; i--) //这三个 for 循环为日历赋数据源(数组 WebCalendar.day)格式是 d/m/yyyy   
  309.     {   
  310.         WebCalendar.day[i] = prevDays +"/"+ (parseInt(m, 10)-1) +"/"+ y;   
  311.         if(m==1) WebCalendar.day[i] = prevDays +"/"+ 12 +"/"+ (parseInt(y, 10)-1);   
  312.         prevDays--;   
  313.     }   
  314.     for(var i=1; i<=WebCalendar.daysMonth[m-1]; i++) WebCalendar.day[i+w-1] = i +"/"+ m +"/"+ y;   
  315.     for(var i=1; i<WebCalendar.dayShow-w-WebCalendar.daysMonth[m-1]+1; i++)   
  316.     {   
  317.         WebCalendar.day[WebCalendar.daysMonth[m-1]+w-1+i] = i +"/"+ (parseInt(m, 10)+1) +"/"+ y;   
  318.         if(m==12) WebCalendar.day[WebCalendar.daysMonth[m-1]+w-1+i] = i +"/"+ 1 +"/"+ (parseInt(y, 10)+1);   
  319.     }   
  320.     for(var i=0; i<WebCalendar.dayShow; i++)    //这个循环是根据源数组写到日历里显示   
  321.     {   
  322.         var a = WebCalendar.day[i].split("/");   
  323.         WebCalendar.dayObj[i].innerText    = a[0];   
  324.         WebCalendar.dayObj[i].title        = a[2] +"-"+ appendZero(a[1]) +"-"+ appendZero(a[0]);   
  325.         WebCalendar.dayObj[i].bgColor      = WebCalendar.dayBgColor;   
  326.         WebCalendar.dayObj[i].style.color  = WebCalendar.wordColor;   
  327.         if ((i<10 && parseInt(WebCalendar.day[i], 10)>20) || (i>27 && parseInt(WebCalendar.day[i], 10)<12))   
  328.             WebCalendar.dayObj[i].style.color = WebCalendar.wordDark;   
  329.         if (WebCalendar.inputDate==WebCalendar.day[i])    //设置输入框里的日期在日历上的颜色   
  330.         {WebCalendar.dayObj[i].bgColor = WebCalendar.darkColor; WebCalendar.dayObj[i].style.color = WebCalendar.lightColor;}   
  331.         if (WebCalendar.day[i] == WebCalendar.today)      //设置今天在日历上反应出来的颜色   
  332.         {WebCalendar.dayObj[i].bgColor = WebCalendar.todayColor; WebCalendar.dayObj[i].style.color = WebCalendar.lightColor;}   
  333.     }   
  334. }   
  335. function returnDate() //根据日期格式等返回用户选定的日期   
  336. {   
  337.     if(WebCalendar.objExport)   
  338.     {   
  339.         var returnValue;   
  340.         var a = (arguments.length==0) ? WebCalendar.day[this.id.substr(8)].split("/") : arguments[0].split("/");   
  341.         var d = WebCalendar.format.match(/^(/w{4})(-|//)(/w{1,2})/2(/w{1,2})$/);   
  342.         if(d==null){alert("你设定的日期输出格式不对!/r/n/r/n请重新定义 WebCalendar.format !"); return false;}   
  343.         var flag = d[3].length==2 || d[4].length==2; //判断返回的日期格式是否要补零   
  344.         returnValue = flag ? a[2] +d[2]+ appendZero(a[1]) +d[2]+ appendZero(a[0]) : a[2] +d[2]+ a[1] +d[2]+ a[0];   
  345.         if(WebCalendar.timeShow)   
  346.         {   
  347.             var h = new Date().getHours(), m = new Date().getMinutes(), s = new Date().getSeconds();   
  348.             returnValue += flag ? " "+ appendZero(h) +":"+ appendZero(m) +":"+ appendZero(s) : " "+  h  +":"+ m +":"+ s;   
  349.         }   
  350.         WebCalendar.objExport.value = returnValue;   
  351.         hiddenCalendar();   
  352.     }   
  353. }   
  354. //-->   
  355.   
  356.   

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值