服务范围 ============= 1:logo制作,div+css,切图兼容主流浏览器,网页错位,css兼容,图片处理。 2:js特效,js问题,功能开发.AJAX无刷新数据。 3:网站搬家,数据access,mysql,msql。 4:ASP程序开发,aspcms,zblog,科讯等CMS建站,ASP程序二次开发 5:PHP程序开发,WP模板插件开发,ECSHOP二次开发建站,dedecms建站,GXcms,DZ论坛等 6:net开发 只接定制开发或二次开发! 7:及时,高效,真诚。信誉保证(A5有80多笔交易记录,点击我的ID帐号可以查看),价格实在,欢迎惠顾! QQ:536272015 电话:15902018028 老刘技术

js表格拖选动态效果COOL而实用

效果图:

 

 

 

 

 

 

PS: 

1.如果数据单元格没有数据,请将ID设为空或去掉ID,样式为"inactive".则选择时会跳过此单元格。

2.如果不想某个单元格被选,请将class设为“bg_green”,则选择时会跳过此单元格。

 

  1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  2 "http://www.w3.org/TR/html4/loose.dtd">
  3 <html>
  4 <head>
  5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  6 <title>calendar</title>
  7 <style type="text/css">
  8 /*button style*/
  9 .button{
 10  padding: 2px;
 11  color: #F5F5F5;
 12  background-color: #3665A5;
 13  border-width: 1px 2px 2px 1px;
 14  border-color: #D2D2D2 #305B93 #305B93 #D2D2D2;
 15  border-style: solid;
 16  font: bold 14px verdana;
 17 }
 18 body,td{margin:0;font:12px verdana;cursor:default;}
 19 #ca td{/*width:20px;height:25px;*/border-right:1px solid;border-bottom:1px solid;text-align:center;}
 20 .daysTitle td{border-right:1px solid #A6D2FF;text-align:center;font-weight:bold;}
 21 .font_red{color:red;}
 22 .monthsTitle td{border-bottom:1px solid #A6D2FF;text-align:center;color:#fafafa;}
 23 .bg_red{background-color:#FF0000;color:#FFFFCC; border-color:#FFCCCC;}
 24 .bg_green{background-color:#00CC00;}
 25 .inactive{background-color:#E1F0FF; border-color:#A6D2FF;}
 26 .noData{background-color:#ccc; border-color:#999;}
 27 </style>
 28 <script language="javascript" type="text/javascript" src="array.js"></script>
 29 </head>
 30 <body>
 31 <script type="text/javascript" language="javascript">
 32 /******************************************************************
 33  此代码为FLYINGFISH原创,你可以免费使用,修改完善。但作为对作者和对你自己的尊重,务必保留此原始版权信息,
 34 DESIGNED BY: flyingfish
 35 WEB SITE: www.yu5911.cn
 36 EMAIL:penglongxiang@gmail.com
 37 QQ: 55856710
 38 ******************************************************************/
 39 Array.prototype.remove = function(index){
 40  if(isNaN(index)||(index>=this.length)||(index<0)) return false;
 41     this.splice(index,1);
 42  return true;
 43 }
 44 Array.prototype.del=function(n) {  //n表示第几项,从0开始算起。
 45 //prototype为对象原型,注意这里为对象增加自定义方法的方法。
 46   if(n<0)  //如果n<0,则不进行任何操作。
 47     return this;
 48   else
 49     return this.slice(0,n).concat(this.slice(n+1,this.length));
 50     /*
 51       concat方法:返回一个新数组,这个新数组是由两个或更多数组组合而成的。
 52             这里就是返回this.slice(0,n)/this.slice(n+1,this.length)
 53            组成的新数组,这中间,刚好少了第n项。
 54       slice方法: 返回一个数组的一段,两个参数,分别指定开始和结束的位置。
 55     */
 56 }
 57 Array.prototype.indexOf = function(value){
 58  for(var i=0;i<this.length;i++){
 59   if(typeof(value.equals)=="function"){
 60    if(value.equals(this[i])) return i;
 61   }else if(value==this[i]) return i;
 62  }
 63  return -1;
 64 }
 65 Array.prototype.contains = function(value){
 66  return this.indexOf(value)>=0;
 67 }
 68 Array.prototype.clear = function(){
 69  while(this.length>0) this.remove(this.length-1);
 70 }
 71 Array.prototype.add = function(index,value){
 72  if(value==undefined) this.put(index);
 73  else{
 74   var len = this.length;
 75   this.push(this[len-1]);
 76   for(var i=len-1;i>index;i--) this[i] = this[i-1];
 77   this[index] = value;
 78  }
 79 }
 80 Array.prototype.put = function(value){
 81  if(!this.contains(value)) this.push(value);
 82 }
 83 Array.prototype.circle = function(degressive){
 84  if(degressive){
 85   var a = this[0];
 86   for(var i=0;i<this.length-1;i++) this[i] = this[i+1];
 87   this[this.length-1] = a;
 88  }else{
 89   var a = this[this.length-1];
 90   for(var i=this.length-1;i>0;i--) this[i] = this[i-1];
 91   this[0] = a;
 92  }
 93 }
 94 var selectedID = new Array()
 95 var months,days,temp_m,temp_d,temp_m1,temp_d1,isSelected=false,datedata="";
 96 //document.write('<table id="ca"  onselectstart="return false" border="0" cellpadding="0" cellspacing="0">')
 97 for(t=1;t<13;t++){
 98   datedata =datedata + '<tr>'
 99   for(i=1;i<=42;i++){
100    datedata =datedata +' <td width="20" height="25"  id="m'+t+'d'+i+'" name="m'+t+'d'+i+'" class="inactive" >'+i+'</td>'
101   }
102   datedata =datedata +'</tr>'
103  }
104 datedata = '<table id="ca"  onselectstart="return false" border="0" cellpadding="0" cellspacing="0" width="100%" height="100%" >'+datedata+"</table>"
105  //document.write('</table>')
106 function selectDate(startM,endM,startD,endD){
107  for(m = startM;m<=endM;m++){
108   for(d = startD;d<=endD;d++){
109    tid=document.getElementById("m"+m+"d"+d)
110    if(tid!=null){
111     if(tid.className!="bg_green"){
112      if(selectedID.indexOf("m"+m+"d"+d)!=-1){
113       did =selectedID.indexOf("m"+m+"d"+d)
114       selectedID.remove(did)
115       tid.className="inactive" 
116      }else{
117       selectedID.put("m"+m+"d"+d)
118       tid.className="bg_red"  
119      }       
120     } 
121    }
122   }
123  }
124  document.getElementById("report").innerHTML="<a style='color:red' >共选中"+selectedID.length+"个数据</a>"+selectedID;
125 }
126 function selectAll(v){
127  if(v){
128   resetAll();
129   selectDate(1,months,1,days)
130  }else{
131   selectDate(1,months,1,days)
132  }
133 }
134 function resetAll(){
135  if(selectedID.length>0){
136   for(k=1;k<=selectedID.length;k++){
137    did=document.getElementById(selectedID[k-1])
138    did.className="inactive";
139   }
140   selectedID.clear();
141   document.getElementById("report").innerHTML="<a style='color:red' >共选中"+selectedID.length+"个数据</a>"+selectedID;
142  }
143 }
144 function selectMonth(month){
145  month = month.parentNode.rowIndex+1
146  selectDate(month,month,1,days)
147 }
148 function selectDay(day){
149  day = day.cellIndex + 1;
150  selectDate(1,months,day,day)
151 }
152 window.onload=function ()
153 {
154  dayObj = document.getElementById("days");
155  monthObj = document.getElementById("months")
156  days = dayObj.rows[0].cells.length //get days
157  months = monthObj.rows.length // get Months
158  var obj=document.getElementById("dataTable");
159  var eventObj;
160  //creatDateData
161  document.getElementById("dataTable").innerHTML=datedata
162    
163  //document.body.innerText=document.body.innerHTML
164  
165  obj.onmousedown=function(event)
166  {
167   if(event == null){
168   event = window.event; // For IE
169   }
170   var eventObj = event.srcElement? event.srcElement : event.target;  // IE use srcElement, Firefox use target
171         if(eventObj.tagName=="td"||eventObj.tagName=="TD")
172   {
173    xy=eventObj.getAttribute("name").split("d"); 
174    temp_d=parseInt(xy[1])
175    temp_m=parseInt(xy[0].split("m")[1])
176    selectDate(temp_m,temp_m,temp_d,temp_d)
177   }
178  }
179  
180  
181  obj.onmouseup=function(event)
182  {
183   if(event == null){
184   event = window.event; // For IE
185   }
186   var eventObj = event.srcElement? event.srcElement : event.target;  // IE use srcElement, Firefox use target
187         if(eventObj.tagName=="td"||eventObj.tagName=="TD")
188   {
189    xy=eventObj.getAttribute("name").split("d");
190    temp_d1=parseInt(xy[1])
191    temp_m1=parseInt(xy[0].split("m")[1])
192    sM=temp_m<temp_m1?temp_m:temp_m1;
193    sD=temp_d<temp_d1?temp_d:temp_d1;
194    eM=temp_m<temp_m1?temp_m1:temp_m;
195    eD=temp_d<temp_d1?temp_d1:temp_d; 
196    selectDate(sM,eM,sD,eD) 
197    selectDate(temp_m,temp_m,temp_d,temp_d)   
198   }
199  }
200 /********************************************************/
201 dayObj.onclick=function(event)
202  {
203   if(event == null){
204   event = window.event; // For IE
205   }
206   var eventObj = event.srcElement? event.srcElement : event.target;  // IE use srcElement, Firefox use target
207         if(eventObj.tagName=="TD")
208   {
209   
210    selectDay(eventObj)
211   }
212  }
213 monthObj.onclick=function(event)
214  {
215   if(event == null){
216   event = window.event; // For IE
217   }
218   var eventObj = event.srcElement? event.srcElement : event.target;  // IE use srcElement, Firefox use target
219         if(eventObj.tagName=="TD")
220   {
221    selectMonth(eventObj)
222   }
223  }
224 }
225 </script>
226 <table width="100%"  border="0" cellspacing="0" cellpadding="0">
227   <tr align="center" valign="middle" bgcolor="#99CCFF">
228     <td height="40" colspan="2">
229   <INPUT class=button type=submit value=" < " name=Submit3>
230   2006
231   <INPUT class=button type=submit value=" > " name=Submit4> 
232  </td>
233   </tr>
234   <tr bgcolor="#0099CC">
235     <td height="25"> </td>
236     <td height="25" align="left" valign="top">
237   <table width="100%"  border="0" cellpadding="0" cellspacing="0" class="daysTitle" id="days">
238    <tr align="center" valign="middle">
239      <td width="20" height="25">M</td>
240      <td width="20" height="25">T</td>
241      <td width="20" height="25">W</td>
242      <td width="20" height="25">T</td>
243      <td width="20" height="25">F</td>
244      <td width="20" height="25" class="font_red" >S</td>
245      <td width="20" height="25" class="font_red" >S</td>
246      <td width="20" height="25">M</td>
247      <td width="20" height="25">T</td>
248      <td width="20" height="25">W</td>
249      <td width="20" height="25">T</td>
250      <td width="20" height="25">F</td>
251      <td width="20" height="25" class="font_red" >S</td>
252      <td width="20" height="25" class="font_red" >S</td>
253      <td width="20" height="25">M</td>
254      <td width="20" height="25">T</td>
255      <td width="20" height="25">W</td>
256      <td width="20" height="25">T</td>
257      <td width="20" height="25">F</td>
258      <td width="20" height="25" class="font_red" >S</td>
259      <td width="20" height="25" class="font_red" >S</td>
260      <td width="20" height="25">M</td>
261      <td width="20" height="25">T</td>
262      <td width="20" height="25">W</td>
263      <td width="20" height="25">T</td>
264      <td width="20" height="25">F</td>
265      <td width="20" height="25" class="font_red" >S</td>
266      <td width="20" height="25" class="font_red" >S</td>
267      <td width="20" height="25">M</td>
268      <td width="20" height="25">T</td>
269      <td width="20" height="25">W</td>
270      <td width="20" height="25">T</td>
271      <td width="20" height="25">F</td>
272      <td width="20" height="25" class="font_red" >S</td>
273      <td width="20" height="25" class="font_red" >S</td>
274      <td width="20" height="25">M</td>
275      <td width="20" height="25">T</td>
276      <td width="20" height="25">W</td>
277      <td width="20" height="25">T</td>
278      <td width="20" height="25">F</td>
279      <td width="20" height="25" class="font_red" >S</td>
280      <td width="20" height="25" class="font_red" >S</td> 
281     </tr>
282    </table>
283  </td>
284   </tr>
285   <tr>
286     <td width="60" align="left" valign="top" bgcolor="#0099CC">
287  <table width="100%"  border="0" cellpadding="0" cellspacing="0" id="months" class="monthsTitle">
288   <tr>
289     <td height="25" align="center" valign="middle">Jan</td>
290   </tr>
291   <tr>
292     <td height="25" align="center" valign="middle">Feb</td>
293   </tr>
294   <tr>
295     <td height="25" align="center" valign="middle">Mar</td>
296   </tr>
297   <tr>
298     <td height="25" align="center" valign="middle">Apr</td>
299   </tr>
300   <tr>
301     <td height="25" align="center" valign="middle">May</td>
302   </tr>
303   <tr>
304     <td height="25" align="center" valign="middle">Jun</td>
305   </tr>
306   <tr>
307     <td height="25" align="center" valign="middle">Jul</td>
308   </tr>
309   <tr>
310     <td height="25" align="center" valign="middle">Aug</td>
311   </tr>
312   <tr>
313     <td height="25" align="center" valign="middle">Sep</td>
314   </tr>
315   <tr>
316     <td height="25" align="center" valign="middle">Oct</td>
317   </tr>
318   <tr>
319     <td height="25" align="center" valign="middle">Nov</td>
320   </tr>
321   <tr>
322     <td height="25" align="center" valign="middle">Dec</td>
323   </tr>
324 </table>
325  </td>
326     <td align="left" valign="top"><div id="dataTable" style="width:100%;"></div>
327  </td>
328   </tr>
329 </table>
330 <table width="100%" height="40"  border="0" cellpadding="0" cellspacing="0" bgcolor="#0099CC">
331   <tr>
332     <td> </td>
333     <td> </td>
334     <td width="500"><input name="Submit" type="button" class="button" onClick="selectAll(true)" value="Select All">
335       <input name="Submit" type="button" class="button" onClick="resetAll()" value="Reset All">
336       <input name="Submit" type="button" class="button" onClick="selectAll(false)" value="Reverse Select"></td>
337   </tr>
338 </table>
339 <div id="report" style="width:100%;height:200px;overflow:auto; background-color:#CCCCCC;word-break:break-all; white-space:normal;line-height:18px;"></div>
340 </body>
341 </html>
View Code

 

posted @ 2013-08-26 07:09  未来在手中  阅读(472)  评论(0编辑  收藏  举报
服务范围 ============= 1:logo制作,div+css,切图兼容主流浏览器,网页错位,css兼容,图片处理。 2:js特效,js问题,功能开发.AJAX无刷新数据。 3:网站搬家,数据access,mysql,msql。 4:ASP程序开发,aspcms,zblog,科讯等CMS建站,ASP程序二次开发 5:PHP程序开发,WP模板插件开发,ECSHOP二次开发建站,dedecms建站,GXcms,DZ论坛等 6:net开发 只接定制开发或二次开发! 7:及时,高效,真诚。信誉保证(A5有80多笔交易记录,点击我的ID帐号可以查看),价格实在,欢迎惠顾! QQ:536272015 电话:15902018028 老刘技术