zoukankan      html  css  js  c++  java
  • javascript学习之时间组件

    写了一个时间组件,哪里需要哪里调(菜鸟级别,大牛路过就Ok了):

    先有一个HTML文件:

     1 <!doctype>
     2 <html>
     3 <head>
     4 <title></title>
     5 <style>
     6 
     7 </style>
     8 <script src="calendar.js"></script>
     9 <script>
    10 window.onload=function(){
    11     myCalendar("date");
    12 }
    13 </script>
    14 </head>
    15 <body>
    16 <form action="a.html">
    17     <div style="position:relative; left:100px; top:10px;">
    18         买票日期:<input type="text" name="date">
    19     </div>
    20     
    21 </form>
    22 </body>
    23 </html>
    View Code

    接下来是一个Css样式文件:

     1 *{margin:0px;padding:0px;list-style:none;}
     2 .calendar{width:210px;border:1px solid #000; margin:0 auto;position:absolute;display:none;}
     3 .calendar h3{ height:30px; line-height:30px; text-align:center;}
     4 .calendar ol{ overflow:hidden; border-bottom:1px solid #ccc;}
     5 .calendar ol li{ width:30px; height:30px; line-height:30px; float:left; text-align:center;}
     6 .calendar ul {overflow:hidden;}
     7 .calendar ul li{ width:30px; height:30px; line-height:30px; float:left; text-align:center;font-family:"微软雅黑";font-size:14px;}
     8 .calendar .week{ color:red;}
     9 .calendar .pass{color:#ccc;}
    10 .calendar .today{color:#fff;background:#f60;}
    11 .calendar .prev,.calendar .next{position:absolute; top:10px; text-decoration:none;}
    12 .calendar .prev{ left:10px;}
    13 .calendar .next{ right:10px;}
    14 /*.calendar #h3{font-family:"微软雅黑";font-weight:normal;font-size:16px;}*/
    View Code

    下边是Js文件:

      1 (function(){
      2     function getPos(obj){
      3         var t=0;
      4         var l=0;
      5         while(obj){
      6             t+=obj.offsetTop;
      7             l+=obj.offsetLeft;
      8             obj=obj.offsetParent;
      9         }
     10         return {top:t,left:l};
     11     }
     12     var added=false;//用来判断是否加载边Css文件
     13     
     14     window.myCalendar = function(name){
     15         var oInput = document.getElementsByName(name)[0];
     16         var oBox = document.createElement("div");
     17         oBox.className = 'calendar';
     18         oBox.setAttribute('id','calendar');
     19         
     20         oInput.onclick = function(ev){
     21             var oEvent = ev || event;
     22             oEvent.cancelBubble = true;
     23         }
     24         
     25         oInput.onfocus = function(){
     26             oBox.style.display = 'block';
     27             oBox.style.left = getPos(oInput).left+'px';
     28             oBox.style.top = getPos(oInput).top+oInput.offsetHeight+'px';
     29             
     30         }
     31         
     32         // var onClicked = oBox.onclick = (function(){return true})();
     33         oBox.innerHTML='<a href="javascript:;" class="prev" id="prevMonty">←</a>'
     34             +'<a href="javascript:;" class="next" id="nextMonty">→</a>'
     35             +'<h3 id="h3">2014年3月</h3>                        '
     36             +'<ol>                                      '
     37             +'<li>一</li>                               '
     38             +'<li>二</li>                               '
     39             +'<li>三</li>                               '
     40             +'<li>四</li>                               '
     41             +'<li>五</li>                               '
     42             +'<li class="week">六</li>                  '
     43             +'<li class="week">日</li>                  '
     44             +'</ol>                                     '
     45             +'<ul>                                      '
     46             +'</ul>';
     47         document.body.appendChild(oBox);
     48         /*var oDiv = document.getElementById("calendar");*/
     49         var oUl = oBox.getElementsByTagName("ul")[0];
     50         
     51         var oPrev = document.getElementById('prevMonty');
     52         var oNext = document.getElementById("nextMonty");
     53         
     54         var oH3 = document.getElementById("h3");
     55         var iNow = 0;
     56         
     57         function reFresh(){
     58             oUl.innerHTML = '';//清空Ul
     59             //本月的1号是周几
     60             function getFirstDay(){
     61                 var oDate = new Date();
     62                 
     63                 
     64                 
     65                 oDate.setMonth(oDate.getMonth()+iNow);
     66                 oDate.setDate(1);//将时间设置到本月的1号
     67                 return oDate.getDay();
     68             }
     69             var w = getFirstDay();
     70             if(w==0)w=7;//如果是周日,就让它等于7
     71             //创建空白Li
     72             for(var i=0;i<w;i++){
     73                 var oLi = document.createElement("li");
     74                 oUl.appendChild(oLi);
     75             }
     76             //本月的天数
     77             function getDays(){
     78                 var oDate = new Date();
     79                 
     80                 oDate.setDate(1);
     81                 
     82                 oDate.setMonth(oDate.getMonth()+iNow);
     83                 oDate.setMonth(oDate.getMonth()+1);//将日期调到下一个月
     84                 oDate.setDate(0);//将日期调到上个月的最后一天
     85                 return oDate.getDate();
     86             }
     87             var d = getDays();
     88             //创建Li
     89             for(var i=0;i<d;i++){
     90                 var oLi = document.createElement("li");
     91                 oLi.innerHTML = i+1;
     92                 
     93                 //li点击事件
     94                 oLi.onclick = function(){
     95                     onClickBox = true;
     96                     var oDate = new Date();
     97                     
     98                     oDate.setDate(1);
     99                     
    100                     oDate.setMonth(oDate.getMonth()+iNow);
    101                     
    102                     oInput.value = oDate.getFullYear()+'-'+(oDate.getMonth()+1)+'-'+this.innerHTML;
    103                     oBox.style.display = 'none';
    104                 }
    105                 oUl.appendChild(oLi);
    106             }
    107             //周末变红
    108             for(var i=0;i<oUl.children.length;i++){
    109                 if(i%7==0 || i%7==6){
    110                     oUl.children[i].className = "week";
    111                 }
    112             }
    113             if(iNow < 0){
    114                 for(var i=0;i<oUl.children.length;i++){
    115                     oUl.children[i].className = 'pass';
    116                 }
    117             }else if(iNow > 0){
    118             
    119             }else{
    120                 //让过去的变灰,当前的高亮
    121                 var oDate = new Date();
    122                 oDate.setMonth(oDate.getMonth()+iNow);
    123                 var today = oDate.getDate();
    124                 for(var i=0;i<oUl.children.length;i++){
    125                     if(oUl.children[i].innerHTML < today){
    126                         oUl.children[i].className = 'pass';
    127                     }else if(oUl.children[i].innerHTML == today){
    128                         oUl.children[i].className = 'today';
    129                     }
    130                 }
    131             }
    132             
    133             var oDate = new Date();
    134             oDate.setDate(1);
    135             oDate.setMonth(oDate.getMonth()+iNow);
    136             oH3.innerHTML = oDate.getFullYear()+'年'+(oDate.getMonth()+1)+'月';
    137         }
    138         reFresh();
    139         oNext.onclick = function(){
    140             iNow++;
    141             reFresh();
    142         }
    143         oPrev.onclick = function(){
    144             iNow--;
    145             reFresh();
    146         }
    147         oBox.onclick = function(ev){
    148             var oEvent = ev || event;
    149             if(window.event){
    150                 oEvent.cancelBubble = true;
    151             }else{
    152                 oEvent.stopPropagation();
    153             }
    154             
    155         }
    156         //css文件加载
    157         if(added)return;
    158         added = true;
    159         var oLink = document.createElement('link');
    160         oLink.rel = "stylesheet";
    161         oLink.href="calendar.css";
    162         oLink.type = "text/css";
    163         
    164         var oHead = document.getElementsByTagName('head')[0];
    165         oHead.appendChild(oLink);
    166         
    167         
    168     }
    169     document.onclick = function(){
    170         var oBox = document.getElementById('calendar');
    171         oBox.style.display = 'none';
    172     }
    173 })();
    View Code
  • 相关阅读:
    工具类--map 转成xml xml转成map
    工具类--MD5Utils
    工具类--敏感信息掩码规则
    spring--Springmvc中@Autowired注解与@Resource注解的区别
    工具类--发送验证码短信
    工具类--日期工具类
    工具类--Excel 导出poi
    Jquery mobile中的 checkbox和radio的设置问题
    ASP和JS读写Cookie的问题
    js获取当前用户IP
  • 原文地址:https://www.cnblogs.com/yuexin/p/3583121.html
Copyright © 2011-2022 走看看