本来算法其实很简单,但是,建立在一个设计的不尽合理的基础上,实现该算法,真相当麻烦:
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 }