|
【思路】日曆右側活動列表實現持續時間大於1天的活動塊狀顯示 |
一派掌門 二十級 |
|
一派掌門 二十級 |
ot.showing=Array();
先建立數組。假設當前遍歷到2010年11月10日,對應的表格號(var:itemid)是17。該日期下有一個長3天的活動,也就是持續到12日,那麼當前遍歷到10日是該活動就沒有結束,那麼就不顯示右圓角。
|
|
一派掌門 二十級 |
此時把活動id和該活動在表格中的顯示順序記錄入數組ot.showing。
循環段結束,接下來遍歷11日。11日中繼承活動10日的那個長3天的活動(xml中已返回),此時遍歷一下數組:
<?js
for(i=0;i<ot.showing.length;i++){
dd=ot.showing[i][0]; //活動id
ddd=ot.showing[i][1]; //表格中的顯示順序
}
?>
|
|
一派掌門 二十級 |
思路又陷入混亂了……整理一下!
|
|
一派掌門 二十級 |
簡單寫一下:當變量j在ot.showing中存在記錄時,用空li標籤霸占當前的位置,然後再輸出當前活動的li標籤,假設那個長3日的活動(以後叫x活動)在10日表格中的顯示序號為1,那麼在11號表格中:
若11號除了x活動外一個活動都沒有,那麼var:activesnum就等於1,遍歷過程如下:
for (j=0;j<activesnum;j++,amn++){
第一次遍歷,var:j等於0,此時剛好指向x活動。由於x活動在10號中的顯示序號為1,當前序號(var:j)是0,那麼10號就不能顯示到……太複雜了,程序中根本無法實現,算了,改用換數組的方法。
|
|
一派掌門 二十級 |
換數組的方法具體是:
ajax返回的xml中的根節點下有很多日期節點,各日期節點下有很多活動節點。先把這些活動節點遍歷進入數組,等待排序:
var dn=Array(); //活動節點
dn[i]=Array(); //dn[i]中i為表格號,值為各活動
假設dn[表格號]的數據格式是:Array("活動數據組","活動數據組",...))
若dn[17]==Array(Array("標題","內容"),Array("22","33"));
主動把數組位置調換一下,再遍歷數組就可以了。
|
|
一派掌門 二十級 |
回覆:6樓
我改在用php-ajax伺服器端排序了
|
|
一派掌門 二十級 |
//排序 foreach ($stfed as $i=>$v){ //$stfed:昨天的全部活動,$stf:今天的全部活動 //$i:活動編號,$v:活動顯示序號 if (!is_numeric($v)) continue; //若活動顯示序號不是數字 //若昨天的活動編號今天有,則對齊 //$i就是昨天的活動編號,首先判斷今天有沒有這個活動,沒有的話就continue $Is=arraygetid($stf,$i); //鍵名 if ($Is<0) continue; //若今天沒有這個活動 $IS=$str[$Is]; //今天這個活動的顯示序號 //$v:昨天這個活動的顯示序號 //對齊 }
|
|
一派掌門 二十級 |
//排序 foreach ($stfed as $i=>$v){ //★★這個最好再換一下變量★★ //$stfed:昨天的全部活動,$stf:今天的全部活動 //$i:活動編號,$v:活動顯示序號 if (!is_numeric($v)) continue; # 若活動顯示序號不是數字 //若昨天的活動編號今天有,則對齊 # $i就是昨天的活動編號,首先判斷今天有沒有這個活動,沒有的話就continue $Is=arraygetid($stf,$i); # 鍵名 //★★可能是這個出錯了★★ if ($Is<0) continue; # 若今天沒有這個活動 $IS=intval($str[$Is]); # 今天這個活動的顯示序號 //$v:昨天這個活動的顯示序號 //對齊 # 檢測今天活動的正確位置是否被其他活動占了 if (isset($std[$v])){ # 占了就交換位置 $a=$std[$IS]; $b=$std[$v]; $std[$v]=$a; $std[$IS]=$b; //$debug.=$IS."||||".$v."||||".$dstr; //$debug.=sExplode("|",$stfed); //★有誤★ }else{ # 沒占 } }
|
|
一派掌門 二十級 |
算了,沒時間了
|
|
一派掌門 二十級 |
時間真是太少了!
|
|
一派掌門 二十級 |
第一步成功了!
|
|
一派掌門 二十級 |
高興ing!
|
|
一派掌門 二十級 |
//排序 foreach ($stfed as $i=>$v){ /* $stfed:昨天的全部活動,$stf:今天的全部活動 $i:昨天的活動顯示序號,$v:昨天的活動編號 若昨天的活動編號今天有,則對齊 $i就是昨天的活動編號,首先判斷今天有沒有這個活動,沒有的話就continue */ $Is=arraygetid($stf,$v); //獲得今天顯示該活動的序號(錯誤的) if ($Is==-1){ //$v:昨天這個活動的顯示序號 continue; # 若今天沒有這個活動 } //對齊 # 檢測今天活動的正確位置是否被其他活動占了 if (isset($std[$i])){ //占了就交換位置 $a=$std[$Is]; # 今天活動的錯誤位置的活動數據 $b=$std[$i]; # 今天活動的正確位置的活動數據 $std[$i]=$a; $std[$Is]=$b; # 糾正$stf數組(防止第三日的活動錯位),使各日的活動與第一天平行 $a=$stf[$Is]; $b=$stf[$i]; $stf[$i]=$a; $stf[$Is]=$b; }else{ //沒占 } }
|
|
一派掌門 二十級 |
接下來是//沒占
|
|