目前共有15篇帖子。
【思路】日曆右側活動列表實現持續時間大於1天的活動塊狀顯示
1樓 巨大八爪鱼 2010-11-10 21:37
2樓 巨大八爪鱼 2010-11-10 21:39

ot.showing=Array();

先建立數組。假設當前遍歷到2010年11月10日,對應的表格號(var:itemid)是17。該日期下有一個長3天的活動,也就是持續到12日,那麼當前遍歷到10日是該活動就沒有結束,那麼就不顯示右圓角。

3樓 巨大八爪鱼 2010-11-10 21:46

此時把活動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]; //表格中的顯示順序

}

?>

4樓 巨大八爪鱼 2010-11-10 21:46
思路又陷入混亂了……整理一下!
5樓 巨大八爪鱼 2010-11-10 21:55

簡單寫一下:當變量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號就不能顯示到……太複雜了,程序中根本無法實現,算了,改用換數組的方法。

6樓 巨大八爪鱼 2010-11-10 22:04

換數組的方法具體是:

ajax返回的xml中的根節點下有很多日期節點,各日期節點下有很多活動節點。先把這些活動節點遍歷進入數組,等待排序:

var dn=Array(); //活動節點

dn[i]=Array(); //dn[i]中i為表格號,值為各活動

假設dn[表格號]的數據格式是:Array("活動數據組","活動數據組",...))

若dn[17]==Array(Array("標題","內容"),Array("22","33"));

主動把數組位置調換一下,再遍曆數組就可以了。

7樓 巨大八爪鱼 2010-11-10 22:38

回復:6樓

我改在用php-ajax服務器端排序了

8樓 巨大八爪鱼 2010-11-11 13:24
//排序
   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:昨天這個活動的顯示序號
    
    //對齊
   }
9樓 巨大八爪鱼 2010-11-11 13:48
//排序
   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{
     # 沒占
    }
   }
10樓 巨大八爪鱼 2010-11-11 13:48
算了,沒時間了

回復帖子

  抱歉,本吧禁止發帖
內容:
用戶名: 您目前是匿名發表
 
 
©2010-2024 Arslanbar [手機版] [桌面版]
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。