cauchy

我的一个聚合时间段

本来算法其实很简单,但是,建立在一个设计的不尽合理的基础上,实现该算法,真相当麻烦:
  1     /*
  2     *聚合by ZZC
  3     */
  4     
  5     function ReturnTimespan()
  6     {
  7         var returnString = "";
  8         for(var i=0;i<7;i++)
  9         {
 10             for(var j=0;j<24;)
 11             {        
 12                     var currentFirstId = "td_week_"+i+"_hour_"+j+":00";
 13                     var currentSecondId = "td_week_"+i+"_hour_"+j+":30";
 14                     
 15                     var objfirst = document.getElementById(currentFirstId);
 16                     var objsecond = document.getElementById(currentSecondId);        
 17                                 
 18                     var first = document.all?(objfirst.style.cssText):(objfirst.getAttribute("style"));
 19                     var second = document.all?(objsecond.style.cssText):(objsecond.getAttribute("style"));
 20                     if(first.toLowerCase().indexOf("background-color"> -1)//第二层循环表示00~30选中
 21                     {                    
 22                         //后30分钟选中的话,需要继续向下找到,直到找到没选中的为止
 23                         var second = document.all?(objsecond.style.cssText):(objsecond.getAttribute("style"));
 24                         if(second.toLowerCase().indexOf("background-color"> -1)
 25                         {
 26                             var k=j+1;
 27                             var str="";
 28                             for(k=j+1;k<24;k++)
 29                             {
 30                                 var tmpFirstId = "td_week_"+i+"_hour_"+k+":00";
 31                                 var tmpSecondId = "td_week_"+i+"_hour_"+k+":30";
 32                                 var objtmpfirst = document.getElementById(tmpFirstId);
 33                                 var objtmpsecond = document.getElementById(tmpSecondId);        
 34                                 var tmpfirst = document.all?(objtmpfirst.style.cssText):(objtmpfirst.getAttribute("style"));                    
 35                                 var tmpsecond = document.all?(objtmpsecond.style.cssText):(objtmpsecond.getAttribute("style"));
 36                                 if(tmpfirst.toLowerCase().indexOf("background-color"<= -1)//第三层循环00~30没选中
 37                                 {
 38                                     str = ".0";
 39                                     break;
 40                                 }
 41                                 else if(tmpsecond.toLowerCase().indexOf("background-color"<= -1)//表示第三层循环30~60没选中
 42                                 {
 43                                     str = ".5";
 44                                     break;
 45                                 }
 46                             }//第三层循环终止
 47                             //表示已选择
 48                             if (str==".0")
 49                             {                    
 50                                 returnString += i+","+j+".0-"+k+str+";";
 51                                 j=k;
 52                             }                            
 53                             else if(str==".5")
 54                             {
 55                                 returnString += i+","+j+".0-"+k+str+";";
 56                                 j=k+1;//此时走到k的下一个格
 57                             }                                
 58                             else if(str=="")
 59                             {
 60                                 returnString += i+","+j+".0-"+k+".0;";//此时是一直循环到24:00,这期间都被选中
 61                                 j=k;                            
 62                             }                                
 63 
 64                         }
 65                         else//后30分钟没选中
 66                         {        
 67                             returnString += i+","+j+".0-"+j+".5;";
 68                             j++;
 69                         }
 70                     
 71                     
 72                     }
 73                     else if(second.toLowerCase().indexOf("background-color"> -1)//第二层循环30~60选中
 74                     {
 75 
 76                         var str2="";
 77                         var k=j+1;
 78                         for(k=j+1;k<24;k=k+1)
 79                         {
 80                             var tmpFirstId = "td_week_"+i+"_hour_"+k+":00";
 81                             var tmpSecondId = "td_week_"+i+"_hour_"+k+":30";
 82                             var objtmpfirst = document.getElementById(tmpFirstId);
 83                             var objtmpsecond = document.getElementById(tmpSecondId);    
 84                             var tmpfirst = document.all?(objtmpfirst.style.cssText):(objtmpfirst.getAttribute("style"));                    
 85                             var tmpsecond = document.all?(objtmpsecond.style.cssText):(objtmpsecond.getAttribute("style"));
 86                             
 87                             if(tmpfirst.toLowerCase().indexOf("background-color"<= -1)//第三层循环00~30没选中
 88                             {
 89                                 str2 = ".0";
 90                                 break;                                
 91                             }
 92                             else if(tmpsecond.toLowerCase().indexOf("background-color"<= -1)//表示第三层循环30~60没选中
 93                             {
 94                                 str2 = ".5";
 95                                 break;
 96                             }                        
 97                         }
 98                         //第三层循环终止
 99                         //表示已选择
100                         if (str2==".0")
101                         {                    
102                             returnString += i+","+j+".5-"+k+str2+";";
103                             j=k;
104                         }                            
105                         else if(str2==".5")
106                         {
107                             returnString += i+","+j+".5-"+k+str2+";";
108                             j=k+1;//此时走到k的下一个格
109                         }                                
110                         else if(str2=="")
111                         {
112                             returnString += i+","+j+".5-"+k+".0;";//此时是一直循环到24:00,这期间都被选中
113                             j=k;                            
114                         }                                
115                 }
116                 else
117                 {
118                     j++;
119                 }
120 
121             }//第二层循环终止        
122             
123         }//第一层循环终止
124         
125     
126         if (type=="appinfo")
127         {
128             parent.opener.document.getElementById("app_timespan").value = returnString;
129         }
130         else if(type=="branch")
131         {
132             parent.opener.document.getElementById("timespan").value = returnString;
133         }
134         parent.opener.StrToList(returnString,type);
135         self.close();
136     }

posted on 2006-11-03 09:42 Cauchy 阅读(125) 评论(0)  编辑 收藏 引用 所属分类: Javascript

只有注册用户登录后才能发表评论。