WEB前端组件思想【日历】

摘要:
bBtn;//真假切换3940};41//是否生成容器到哪个容器里面左边右边42functionshowDate43{44//点击只限制生成一次生成日期45//获取当前时间4647varoDate=newDate();4849vardayNum=0;//这个月一共多少天;50if(!obj.bBtn)51{52obj.oTtiel=document.createElement;53obj.oTtiel.className="title";54obj.appendChild;5556varotable=document.createElement;57varothead=document.createElement;//改错58varotr=document.createElement;59vararr=["周一","周二","周三","周四","周五","周六","周日"];60for{61varoth=document.createElement;62oth.innerHTML=arr[i];63if64{65oth.className="red";66}67otr.appendChild;//改错68}6970othead.appendChild;71otable.appendChild;7273varotbody=document.createElement;//改错74for{75varotr=document.createElement;76for{77varotd=document.createElement;78otr.appendChild;79}8081otbody.appendChild;82}83otable.appendChild;84obj.appendChild;85obj.bBtn=true86}87//年月蓝色头部88obj.oTtiel.innerHTML=(bBtn?

DEMO2:

思路:首先获取元素节点元素--->根据点击事件隐藏显示元素--->建立showdate方法(判断12月则右边年份+1,月份1)--->还要设置btn开关防止多次重建--->根据元素清空for循环列行、把thtrthead加入table--->根据判断每一次点击进入月份必须先清空一次td

判断月份大小及闰年--->switch循环加入日期

难点:整理下再写

WEB前端组件思想【日历】第1张

代码部分:

1 window.onload=function()
2 {
3     var ainput = document.getElementsByTagName("input");
4     var odiv = document.getElementById("div1");
5     var oNowTime = document.getElementById("nowTime");
6     var oNextTime = document.getElementById("nextTime");
7     //=============获取span   左边 右边的  标题年 月  表示长度【i】
8     var aNowspan = oNowTime.getElementsByTagName('span');
9     var aNextspan = oNextTime.getElementsByTagName('span');
10     var aTd = odiv.getElementsByTagName("td");
11     var bBtn =true;
12     
13     //确认点击事件
14     ainput[2].onclick=function()
15 {
16         var oDate = newDate();
17         if(bBtn)
18 {
19             odiv.style.display="block";
20             //判断时间   当12月是   后面一个月是1月份
21             if (oDate.getMonth()+1 == 12) {
22              showDate(oNowTime,oDate.getFullYear(),oDate.getMonth()+1,true);
23              showDate(oNextTime,oDate.getFullYear()+1,1);
24             }else{
25             showDate(oNowTime,oDate.getFullYear(),oDate.getMonth()+1,true);
26             showDate(oNextTime,oDate.getFullYear(),oDate.getMonth()+2);
27 }
28             //添加方法  当前日期显示红色    后10天显示蓝色
29             console.log("几号"+oDate.getDate());
30 showColor(oDate.getDate());
31 showBtn();
32             
33             
34             
35         }else{
36             odiv.style.display="none";
37 }
38         bBtn = !bBtn;  //真假切换
39         
40 };
41     //是否生成容器到  哪个容器里面  左边  右边
42     functionshowDate(obj,year,month,bBtn)
43 {
44         //点击只限制生成一次    生成 日期
45         //获取当前时间
46 
47         var  oDate = newDate();
48         
49         var dayNum = 0;  //这个月一共多少天;
50         if(!obj.bBtn)
51 {
52             obj.oTtiel = document.createElement("div");
53             obj.oTtiel.className = "title";
54 obj.appendChild(obj.oTtiel);
55             
56             var otable = document.createElement("table");
57             var othead = document.createElement("tHead");  //改错
58             var otr = document.createElement("tr");
59             var arr = ["周一","周二","周三","周四","周五","周六","周日"];
60             for (var i = 0; i < 7; i++) {
61                 var oth= document.createElement("th");
62                 oth.innerHTML =arr[i];
63                 if(i==5 || i==6)
64 {
65                     oth.className="red";
66 }
67                 otr.appendChild(oth); //改错
68 }
69                 
70 othead.appendChild(otr);
71 otable.appendChild(othead);
72             
73             var otbody = document.createElement("tbody");  //改错
74             for (var i = 0; i < 6; i++) {
75                 var otr = document.createElement("tr");
76                 for (var j= 0; j< 7; j++) {
77                     var otd= document.createElement("td");
78 otr.appendChild(otd);
79 }
80                 
81 otbody.appendChild(otr);
82 }
83 otable.appendChild(otbody);
84 obj.appendChild(otable);
85             obj.bBtn = true
86 }
87         //年月     蓝色头部
88         obj.oTtiel.innerHTML = (bBtn ? '<div class="title"><div class="l"><span>'+(month-1)+'</span>月</div>' :'<div class="title"><div class="r"><span>'+(month+1)+'</span>月</div>')+'<div class="c"><span>'+year+'</span>年<span>'+month+'</span>月</div>';
89         
90         var aTd = obj.getElementsByTagName("td");  //误区  如果 obj改为 doucument 则只能显示一张日历
91         //每次都要清空一次  再生产  为什么??  每次点击都是要更新日历内容  如果换一天了 更新一天的日历所以必须清空重新生成
92         for (var i = 0; i < aTd.length; i++) {
93             aTd[i].innerHTML = "";
94 }
95         
96         if(month ==1 || month==3 || month ==5 || month ==7 || month==8 || month==10 || month==12)
97 {
98              dayNum  = 31;
99         }else if (month == 4 || month == 6 || month == 9 || month == 11){
100              dayNum  = 30;
101         }else{ //2月份闰年 判断
102              if(month == 2 &&isleeyear(year)){
103                  dayNum =29;
104              }else{
105                  dayNum = 28;
106 }
107 }
108          
109 oDate.setFullYear(year);
110         oDate.setMonth(month-1);
111         oDate.setDate(1);  //日期
112 console.log(oDate.getDay());
113 console.log(year)
114 console.log(month)
115       
116         switch(oDate.getDay())
117 {
118              case 0:
119              for(var i=0; i<dayNum;i++)
120 {
121                  aTd[i+6].innerHTML = i+1;
122 }
123              break;   
124               case 1:
125              for(var i=0; i<dayNum;i++)
126 {
127                  aTd[i].innerHTML = i+1;
128 }
129              break;   
130               case 2:
131              for(var i=0; i<dayNum;i++)
132 {
133                  aTd[i+1].innerHTML = i+1;
134 }
135              break;   
136               case 3:
137              for(var i=0; i<dayNum;i++)
138 {
139                  aTd[i+2].innerHTML = i+1;
140 }
141              break;   
142               case 4:
143              for(var i=0; i<dayNum;i++)
144 {
145                  aTd[i+3].innerHTML = i+1;
146 }
147              break;  
148                case 5:
149              for(var i=0; i<dayNum;i++)
150 {
151                  aTd[i+4].innerHTML = i+1;
152 }
153              break;   
154                case 6:
155              for(var i=0; i<dayNum;i++)
156 {
157                  aTd[i+5].innerHTML = i+1;
158 }
159              break;   
160             
161 }
162         //判断当前月份是否是1月  则 前面一个月份 是 year-1    月份是12  右边  12  下一个月 为1月
163         if(month==1 &&bBtn){
164             //代表左边一个日历
165             obj.oTtiel.getElementsByTagName('span')[0].innerHTML =12;
166             
167             
168         }else if(month==12 && !bBtn){
169             obj.oTtiel.getElementsByTagName('span')[0].innerHTML =1;
170 }
171         
172         
173         
174         
175 }
176     //闰年判断
177      functionisleeyear(year)
178 {
179            if (year %4 == 0 && year%100 !=0) {
180                  return true;
181            }else if(year%400==0){
182                  return true;
183            }else{
184                 return false;
185 }
186 }
187      
188      functionshowColor(date)
189 {
190          //储存所有带数值的td
191          var oDate = newDate();
192            var result =[];
193            //正则  传入 当前 日期 几号
194            var re = new RegExp(''+date+'(<p>)*');
195            var index = 0;
196            var bBtn = true;
197            for (var i = 0; i <aTd.length; i++) {
198                if (aTd[i].innerHTML != "") {
199 result.push(aTd[i])
200 }
201 }
202            //判断当前 日   月份  是否存在  当前  日历表中
203            if (aNowspan[1].innerHTML == oDate.getFullYear()  && aNowspan[2].innerHTML == oDate.getMonth()+1){
204                    for (var i = 0; i < result.length; i++) {
205                         if (re.test(result[i].innerHTML) &&bBtn) {
206                             result[i].className="red";
207                             index =i;
208                             bBtn = false;
209 }
210 }
211                  //寻找  当前日期后面的 10个日子  变身蓝色
212 console.log(index);
213                   //for循环的另一种思想
214                   var len = index +11;
215                  for(var i=index +1;index+1<len;index++){
216                      result[index+1].className = "blue";
217 }
218                  
219                  
220            }else{
221                   for (var i = 0; i < result.length; i++) {
222                       result[i].className="";
223 }
224 }
225            
226            
227 }
228     functionshowBtn()
229 {
230          //获取左边月份  
231          var leftM = parseInt(aNowspan[0].innerHTML);  
232          var leftY = parseInt(aNowspan[1].innerHTML);
233          
234          console.log(aNowspan[0].innerHTML)
235          //获取  年份
236          var rightM =parseInt(aNextspan[0].innerHTML);
237          var rightY =parseInt(aNextspan[1].innerHTML);
238          //判断 当前日历   下一个点击按钮
239          aNowspan[0].parentNode.onclick=function()
240 {
241              //到12月份  判断
242              if (leftM ==12) {
243              showDate(oNowTime,leftY-1,leftM,true);
244              showDate(oNextTime,leftY,1);
245                  
246              }else{
247              showDate(oNowTime,leftY,leftM,true);
248              showDate(oNextTime,leftY,leftM+1);
249 }
250              
251 showBtn();
252              showColor(new Date().getDate()); //当前日期去验证是否在同一张日历
253 }
254          aNextspan[0].parentNode.onclick=function()
255 {
256              //到12月份  判断
257              if (rightM ==1) { 
258              showDate(oNowTime,rightY,12,true);
259              showDate(oNextTime,rightY+1,rightM);
260                  
261              }else{
262              showDate(oNowTime,rightY,rightM-1,true);
263 showDate(oNextTime,rightY,rightM);
264 }
265              
266 showBtn();
267              showColor(new Date().getDate()); //当前日期去验证是否在同一张日历
268              
269 }
270          
271 }
272     
273     
274     
275 }

HTML部分:

1 <body>
2 <input type="text" /><input type="text" /><input type="button"value="确定" />
3 <div id="div1">
4     <div id="nowTime">
45     </div>
46     <div id="nextTime">
47         <!--<div class="title">
48 <div class="r"><span>3</span>月</div>
49 <div class="c"><span>2000</span>年<span>3</span>月</div>
50 </div>
51 <table>
52 <thead>
53 <tr>
54 <th>周一</th>
55 <th>周二</th>
56 <th>周三</th>
57 <th>周四</th>
58 <th>周五</th>
59 <th class="red">周六</th>
60 <th class="red">周日</th>
61 </tr>
62 </thead>
63 <tbody>
64 <tr>
65 <td>1</td>
66 <td>1</td>
67 <td>1</td>
68 <td>1</td>
69 <td>1</td>
70 <td>1</td>
71 <td>1</td>
72 </tr>
73 <tr>
74 <td>1</td>
75 <td>1</td>
76 <td>1</td>
77 <td>
78 1
79 <p>200元</p>
80 </td>
81 <td>1</td>
82 <td>1</td>
83 <td>1</td>
84 </tr>
85 </tbody>
86 </table>-->
87     </div>
88 </div>
89 
90     </body>

还未完成功能:

点击日历把日历日期赋值到选项框中

在日期中ajax传价格

免责声明:文章转载自《WEB前端组件思想【日历】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C#多功能DataGridView打印类(WinForm)【转】JMeter学习(三十二)属性和变量下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Jqgrid获取行id

//获取选中行(单行)的ID var id = $("#table").jqGrid('getGridParam','selrow'); //根据id获取行数据,返回的是列表 var rowDatas = $("#table").jqGrid('getRowData', id);...

as3.0 Flex 图像处理

as3.0 Flex 图像处理 已知的一些图像处理,主要是得到颜色过滤矩阵,不完整,大家一起来补充。 //颜色转换数组,所有的0都是可调值public var colorArray:Array = [1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0]; 1.处理图像为灰度://取值范围0~3colorArray...

远程连接ubuntu的MongoDB遇到的坑

首先连接不上,先查看云服务器上的安全组是否添加了对应的端口 如果打开了,那么久查看MongoDB是否允许远程连接 # mongod.conf # for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-optio...

linux中apt-get使用

apt-get简介 在Ubuntu系统中,经常要用到apt-get install指令来安装软件,由于常常需要root权限来操作,所以搭配sudo食用口感更佳,apt-get指令对于安装、卸载、升级软件提供一条龙服务,对比于源码安装,实在是业界良心。 源码安装 源码安装的流程一般是三部曲: ./configure make make install...

Unity3D脚本语言UnityScript初探

译者注: Unity3D中支持三种语言:JavaScript、C#、Boo,很多人不知道如何选择,通过这篇译文,我们可以搞清楚这三者语言的来龙去脉,对选择主语言有一定的借鉴意义。 首先,Unity是基于Mono也就是.Net的运行环境的,所以它肯定支持C#;然后,Unity团队自行开发了一种Boo的语言;后面可能考虑到用户的接受程度的问题,又开发了类似J...

JS字符串拼接优化

//请把以下用于连接字符串的JavaScript代码修改为更高效的方式 var htmlString = ‘ < div class=”container” > ’ + ‘ < ul id=”news-list” >’; for (var i = 0; i < NEWS.length; i++) {   htmlString...