<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    憨厚生

    ----Java's Slave----
    ***Java's Host***

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      165 隨筆 :: 17 文章 :: 90 評論 :: 0 Trackbacks

    利用業余時間寫了個日期小控件,寫出來請大家指正一下!
    以下是相關代碼:
    <html xmlns="<head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>date</title>
    </head>
    <body>
    <input name="text" type="text" id="textid" onclick="labelOnClick()" value="click me" />
    <script language="javascript">
      /******************************************************************/
      with(document){
    writeln("<div onclick='event.cancelBubble=true' style='POSITION:absolute;visibility:hidden;border:1px ridge;width:10;z-index:100;' id=\"divid\">");
    writeln("<table style=\"width:130px\" border='0' bgcolor='#6699cc' bordercolor='#0066FF' bordercolordark='#FFFFFF'>");
    writeln(" <tr>");
    writeln("<td><input type=\"button\" value=\"<\" onclick=reduce() /></td>");
    writeln("<td><select size=\"1\" id=\"year\" onchange=\"yearOnchange();\">");
      for(var i=1900;i<=2050;i++){
         if(new Date().getFullYear()==i)
            document.writeln("<option value="+i+" selected=\"selected\">"+i+"年</option>");
         else
            document.writeln("<option value="+i+">"+i+"年</option>"); 
         }
    writeln("</select></td><td><select size=\"1\" id=\"month\" onchange=\"monthOnchange();\">");
       for(var i=0;i<12;i++){
         if(new Date().getMonth()==i )
           document.writeln("<option value="+i+" selected=\"selected\">"+(i+1)+"月"+"</option>");
         else
           document.writeln("<option value="+i+">"+(i+1)+"月"+"</option>");
          }
    writeln("</select></td>");
    writeln("<td><input type=\"button\" value=\">\" onclick=\"add()\"/></td></tr></table>");
    writeln("<table id=\"tableidid\" style=\"width:130px\">"
              +"<tr><td>日</td><td>一</td><td>二</td><td>三</td><td>四</td><td>五</td><td>六</td></tr>"
        +"<tr><td>p</td><td>p</td><td>p</td><td>p</td><td>p</td><td>p</td><td>p</td></tr>"
        +"<tr><td>p</td><td>p</td><td>p</td><td>p</td><td>p</td><td>p</td><td>p</td></tr>"
        +"<tr><td>p</td><td>p</td><td>p</td><td>p</td><td>p</td><td>p</td><td>p</td></tr>"
        +"<tr><td>p</td><td>p</td><td>p</td><td>p</td><td>p</td><td>p</td><td>p</td></tr>"
        +"<tr><td>p</td><td>p</td><td>p</td><td>p</td><td>p</td><td>p</td><td>p</td></tr>"
        +"</table>"
        +"<table align=\"center\"><tr><td>");
    showDate();
    writeln("</td></tr></table></div>")
      }
    /******************************************************************/
    function DateTd(table,rows_x,cells_y,dateValue,textValue){
      this.rows_number =rows_x;   //單元格所在的行數
      this.cells_number=cells_y;  //單元格所在的列數
      this.table       =table     //封裝表格對象
      this.tableObj    =this.table.tableObj; //表格對象
      this.text        =textValue;//文本內容
      this.date        =dateValue;//2007-02-01
      this.day         =null     //星期
      this.td          =this.tableObj.rows[this.rows_number-1].cells[this.cells_number-1]; //單元格
      this.color       ="#000000";    //顏色[#000000 黑色,#FF0000 紅色,#D6D6D6 灰色]
      this.background  ="#FFFFFF";    //背景顏色
     // this.checkEvent=false;         //是否添加onclick事件

      /******************************************************************/
      this.getText=Td_getText;
      this.setText=Td_setText;
      this.getDate=Td_getDate;
      this.setDate=Td_setDate;
      this.getDay =Td_getDay;
      this.setColor=Td_setColor;
      this.setBackGround=Td_setBackGround;
      /******************************************************************/
      this.checked=checked;//檢查行、列數是否與實際相符合
      }
     
    function Td_getText(){
         if(!this.checked())
         return false;  
         var dateTdText=this.tableObj.rows[this.rows_number-1].cells[this.cells_number-1].innerText;
      //return dateTdText;兩個都可以
      return this.text;
    }

    function Td_setText(textValue){
        if(!this.checked())
         return false; 
         this.tableObj.rows[this.rows_number-1].cells[this.cells_number-1].innerText=textValue;
      this.text=textValue;
     }
     
    function checked(){
    //沒有異常為true,有異常為false
         if(this.tableObj.rows.length<this.rows_number)
         return Function.Exception("注意:表格只有"+this.tableObj.rows.length+"行!");
         if(this.tableObj.rows[this.rows_number-1].cells.length<this.cells_number) 
         return Function.Exception("注意:表格第"+this.rows_number+"行只有"+
                          tableObj.rows[this.rows_number-1].cells.length+"列!"); 
      return true;//沒有異常返回true     
    }

    function Td_getDate(){
     return  this.date;
    }

    function Td_setDate(dateValue){
    //dateValue格式為2007-02-01,如果dateValue==null,則返回客戶端的日期否則返回dateValue數值
    //dateValue數值有可能從服務器端得到
    if(dateValue!=null){
       var dateObj=dateValue.split("-");//alert(dateObj.length);
         if(dateObj.length!=3||dateObj[0].length!=4)
            return Function.Exception("日期格式應為YYYY-MM-DD");
      else
         this.date=dateObj[0]+"-"+ dateObj[1]+"-"+dateObj[2];
     }else{
       var dateObj=new Date();
       this.date=dateObj.getFullYear ()+"-"+(dateObj.getMonth()+1)+"-"+dateObj.getDate();
     }
    }

    function Td_getDay(){
      var dateArray=this.date.split("-");
      var dateObj=new Date(dateArray[0],dateArray[1]-1,dateArray[2]);
          this.day=dateObj.getDay();
          return  this.day;
    }

    function Td_setColor(){
        if(this.getDate().split("-")[1]==this.table.currentDate.getMonth()+1){
        if(this.getDay()==0||this.getDay()==6) this.color="#FF0000"; //alert(this.day);
       }else{
         this.color="#D6D6D6";
       }
      this.tableObj.rows[this.rows_number-1].cells[this.cells_number-1].style.color=this.color;
    }

    function Td_setBackGround(){
       var currentDate=new Date();
       var currentYear=currentDate.getFullYear();
       var currentMonth=currentDate.getMonth();
       var currentDateValue=currentDate.getDate();
       var dateArray=this.date.split("-");
       if(currentYear==dateArray[0]&&currentMonth==dateArray[1]-1&&currentDateValue==dateArray[2]){
       this.background="#CCFFFF";}
       this.tableObj.rows[this.rows_number-1].cells[this.cells_number-1].style.background=this.background;
    }

    Function.prototype.Exception=Exception;
    function Exception(content){
      this.content=content;
      alert(content);
      return false;
    }

    /*****************************************************************************************/
    function DateTable(name,id,_top,_left,_date){
      this.name=name;
      this.id=id;
      this.top=_top;
      this.left=_left;
      this.tableObj=document.getElementById(this.id);
      this.setTop=Table_setTop;
      this.setLeft=Table_setLeft;
      if(_date.split("-").length!=3)
        this.currentDate=new Date();
      else
        this.currentDate=new Date(_date.split("-")[0],_date.split("-")[1],_date.split("-")[2]);
      this.currentYear=this.currentDate.getFullYear();
      this.currentMonth=this.currentDate.getMonth();
      this.currentDateValue=this.currentDate.getDate();
     /******************************************************************/
      this.getRows=Table_getRows;    //行數
    }

    function Table_getRows(){
      var tableObj=document.getElementById(this.id);
      this.rows=tableObj.rows.length;
      return tableObj.rows.length;
    }

    function Table_setTop(){
      this.tableObj.style.position ="relative";
      this.tableObj.style.top= this.top+10;
      this.top=this.tableObj.style.top;
      return this.top;
    }

    function Table_setLeft(){
      this.tableObj.style.position ="relative";
      this.tableObj.style.left= this.left;
    }

    /*****************************************************************************************/ 
     
    // tableOb.style.position ="relative";
       var DateArray=new Array();
       var eventArray=new Array();
       var tableOb=null;
    function changeTable(date){
       /*此方法的用于操作每個單元格對象的相關屬性賦值
        *
     */
       tableOb=new DateTable("name","tableidid",200,50,date);//"2007-3-7" 這里的3,表示的是4月
      
       var currentDate=tableOb.currentDate;
       var currentYear=currentDate.getFullYear();
       var currentMonth=currentDate.getMonth();
       var currentDateValue=currentDate.getDate();
       var currentDate1=new Date(currentYear,currentMonth,1);//月初
       var currentDate2=new Date(currentYear,currentMonth,getDays(currentYear,currentMonth+1));//月末
       var riqi=currentYear+"年"+(currentMonth+1)+"月"+currentDateValue+"日";
       var riqi1=currentDate1.getFullYear ()+"年"+(currentDate1.getMonth()+1)+"月"+currentDate1.getDate()+"日";
       var riqi2=currentDate2.getFullYear ()+"年"+(currentDate2.getMonth()+1)+"月"+currentDate2.getDate()+"日";
       var riqi3=currentYear+"-"+(currentMonth+1)+"-";
       /**********************************************************************/
        var before=currentDate1.getDay();
     var next =6-currentDate2.getDay();
       /**********************************************************************/
       var m=0,n=1;
       for(var i=1;i<tableOb.tableObj.rows.length;i++){
         if(i==1)
         for(var k=before,r=1;k>0;k--){
      DateArray[m]=new DateTd(tableOb,i+1,r++,null,null);
         DateArray[m].setText(getDays(currentYear,currentMonth)-k+1);
      DateArray[m].setDate(currentYear+"-"+currentMonth+"-"+DateArray[m].text);
      DateArray[m].setColor();
      if(eventArray.length>=m&&eventArray[m]!=true){
      DateArray[m].td.attachEvent("onclick",tdOnClick);
      eventArray[m]=true;
      }
      m++;
      }
     
         for(var j=0;j<tableOb.tableObj.rows[0].cells.length;j++){
      if(j==0&&i==1) j=currentDate1.getDay();
      DateArray[m]=new DateTd(tableOb,i+1,j+1,null,n);
         DateArray[m].setText(n);
      DateArray[m].setDate(riqi3+n);
      DateArray[m].setColor();
      DateArray[m].setBackGround();//alert(DateArray[m].checkEvent);
      if(eventArray.length>=m&&eventArray[m]!=true){
      DateArray[m].td.attachEvent("onclick",tdOnClick);
      eventArray[m]=true;
      }
      m++;
      n++;
      if(n>currentDate2.getDate())
      break;
          }
      
     if(i==tableOb.tableObj.rows.length-1)  
     for(var d=1;d<=next;d++){
      DateArray[m]=new DateTd(tableOb,i+1,7-next+d,null,d);
         DateArray[m].setText(d);
      DateArray[m].setDate(currentYear+"-"+(currentMonth+2)+"-"+DateArray[m].text);
      DateArray[m].setColor();
      if(eventArray.length>=m&&eventArray[m]!=true){
      DateArray[m].td.attachEvent("onclick",tdOnClick);
      eventArray[m]=true;
      }
      m++;
     }
      }
         } 
    /*****************************************************************************************/ 
    function divObj(id,date,tablename,tableid){//封裝div對象
      this.id=id;
      this.div=document.getElementById(this.id);
      this.date=date;
      /*******************************************************/
      this.isHidden= checkHidden;
      this.DateTable=new DateTable(tablename,tableid,0,0,date);
      this.inint=divObjInint;
    }

    function checkHidden(){
      if(this.div.style.visibility=="hidden"||this.div.style.display=="none"){
         return true;
       }else{
         return false;}
    }
    /*****************************************************************************************/  
    function getDays(year,month){
    //得到每個月是多少天
    var days=0;
    var months=new Array("1","3","5","7","8","10","12");
    var y=year%4;
    if(month==2)
     if(year%4==0&&year%100!=0||year%400==0)
        days=29;
      else
        days=28; 
     for(var i=0;i<months.length;i++){
       if(months[i]==month){
          days=31;
       break;  
       }
     } 
     if(days==0)
       days=30;
      return days;
    }
    function tdOnClick(){//單擊單元格觸發函數
       var textValue=event.srcElement.innerText;
       var colorValue=event.srcElement.style.color;
       var m=null;
       for(var i=0;i<DateArray.length;i++){
         if(DateArray[i].text==textValue&&DateArray[i].color==colorValue.toUpperCase()){
      m=i;
      break;
      }
       }
       //alert(DateArray[m].date);
       remain (DateArray[m]);
       }
      
      
     function remain (Obj){
      document.getElementById("textid").value=Obj.date;
      if(obj.isHidden()==false){//再次點擊,div隱藏
          document.getElementById(obj.id).style.visibility="hidden";
       }
     }

      
     function reduce(){
       var yearoptions=document.getElementById("year");
       var year=yearoptions.options[yearoptions.selectedIndex].value;
       var monthoptions=document.getElementById("month").options;
           if(monthoptions.selectedIndex>0)
           monthoptions.selectedIndex= monthoptions.selectedIndex-1;
       var month= document.getElementById("month").options[monthoptions.selectedIndex].value;  
       changeTable(year+"-"+month+"-"+new Date().getDate());
     }
      
    function add(){
       var yearoptions=document.getElementById("year");
       var year=yearoptions.options[yearoptions.selectedIndex].value;
       var monthoptions=document.getElementById("month").options;
           if(monthoptions.selectedIndex<11)
           monthoptions.selectedIndex= monthoptions.selectedIndex+1;
       var month= document.getElementById("month").options[monthoptions.selectedIndex].value;
       changeTable(year+"-"+month+"-"+new Date().getDate());
    }

    function yearOnchange(){
       var yearoptions=document.getElementById("year");
       var year=yearoptions.options[yearoptions.selectedIndex].value;
       var monthoptions=document.getElementById("month").options;
       var month= document.getElementById("month").options[monthoptions.selectedIndex].value;
       changeTable(year+"-"+month+"-"+new Date().getDate());
    }

    function monthOnchange(){
       var yearoptions=document.getElementById("year");
       var year=yearoptions.options[yearoptions.selectedIndex].value;
       var monthoptions=document.getElementById("month").options;
       var month= document.getElementById("month").options[monthoptions.selectedIndex].value;
       changeTable(year+"-"+month+"-"+new Date().getDate());
    }

    function showdiv(id,divobj){//顯示div
       var divObj=divobj;
           divObj.style.visibility="visible";//alert(this.offsetTop);document.getElementById("divid")
        //divObj.style.position ="relative";
       var object=document.getElementById(id); 
        divObj.style.top  =object.style.top+40;
        divObj.style.left =object.style.left;
    }

    function divObjInint(){
     changeTable("2007-4-7");
     showdiv("textid",this.div);
    }

    function divHedden(){
      var divObj=document.getElementById("divid");
       //if(divObj.style.visibility)
       document.getElementById("divid").style.visibility="hidden";//alert(document.getElementById("divid").style.visibility);
    }

    function showDate(){
     var currentDate=new Date();
     var year=currentDate.getFullYear()+"年";
     var month=(currentDate.getMonth()+1)+"月";
     var date=currentDate.getDate()+"日";
         document.writeln("今天是:"+year+month+date);
     }
    //document.getElementById("divid").attachEvent("onclick",divHedden);
    //changeTable("2007-4-7");
    var obj=new divObj("divid","2007-4-7",null,"tableidid");
    document.attachEvent("onclick",documentOnClick);

    function documentOnClick(){
       if(obj.isHidden()==false)
          document.getElementById(obj.id).style.visibility="hidden"
    }
    function  labelOnClick(){
       if(obj.isHidden()==false){//再次點擊,div隱藏
          document.getElementById(obj.id).style.visibility="hidden";
       return ;
       }
       obj.inint();
       event.cancelBubble=true;//取消事件冒泡
      } 
    </script>
    </body>
    </html>

    主站蜘蛛池模板: 免费精品国产日韩热久久| 亚洲一区二区三区91| 免费看的黄色大片| 亚洲一级毛片免费观看| 国产A∨免费精品视频| 色婷婷六月亚洲综合香蕉| 亚洲国产精品综合久久网各| 久久精品国产亚洲麻豆| 免费在线黄色网址| 午夜毛片不卡高清免费| ww4545四虎永久免费地址| 久草福利资源网站免费| 久久国产乱子伦精品免费午夜| 青草青草视频2免费观看| 亚洲精品自偷自拍无码| 亚洲一区二区三区91| 亚洲在成人网在线看| 久久亚洲AV成人无码电影| 久久久无码精品亚洲日韩软件| 四虎影视精品永久免费网站| 午夜小视频免费观看| 毛片免费vip会员在线看| 一二三四影视在线看片免费| 久久久久久精品免费看SSS| 亚洲视频在线免费观看| 久久国产乱子伦精品免费强| 青青操在线免费观看| 色播在线永久免费视频网站| 波霸在线精品视频免费观看| 久久WWW免费人成—看片| a级毛片在线视频免费观看| av永久免费网站在线观看| 国内精品免费在线观看 | 最近高清国语中文在线观看免费| 亚洲成人免费网址| 97国产免费全部免费观看| 国产成人精品免费视频动漫| 午夜性色一区二区三区免费不卡视频| 永久在线观看www免费视频| 99久久久精品免费观看国产 | 亚洲精品二三区伊人久久|