最近花了3天得时间做了一个栏目定制功能,代码都很简单,先保存在此,备忘
1.函数
/* ----------------------------------coustom Class-------------------------------------------------------------- */

var Coustom=Class.create();
Coustom.prototype
={
  initialize:
function(){
      
this.cookie=new Cookie();
      
this.localArray=this.cookie.format;
      
this.length=this.localArray.length;
      
   }
,
  getURLpages:
function(){   //获得定制页面内容,priavted

      
this.localArray.each(function(value,index){
       
var frameName=templatePre+index;
       
try{
       
this._getFrame(frameName,index)
           }

       
catch(e){
       
       }


      }
.bind(this))
     }
,  
  _getFrame:
function(frameName,index)//@priavted获得栏目得页面内容,
   
     
var frame=$(frameName); 
     
var array=this.localArray[index];
     array.each(
function(value,index){
        
        
this._getPageContext(frame,array[index]);
     }
.bind(this));
   }
,
  _getPageContext:
function(frame,index)//@priavted获得远程页面内容,priavted
     var PageItem= this._getPageitem(index);
       
var div=document.createElement('div'); 
        div.id
=PageItem.name; 
        frame.appendChild(div);
       
      
var url=PageItem.url;
      
var myAjax=new Ajax.Updater(
      div.id,
      url,
      
{method:"GET",
       parameters:
""
      }
);    
   }
,
   _getPageitem:
function(index){   //@priavted获得模版得页面信息
       var templateIndex="Lable"+index;
       eval(
"var page=mytemplate."+templateIndex);
       
return page;   
   }
,
/*-------------------------*/
 setMycoustom:
function(){     //设置我得本地栏目定制
         for(var i=0;i<this.length;i++){
         
var selectColumn=templatePre+i;
         
var selectName=selectColumn+"_select";
         
var selectElement=$(selectName);
        
         
this.cookie.format[i]= this._SetCoustominCookie(selectElement);
        
         }

        
this.cookie.SetValue("format",this.cookie.format.join("!"),1); 
   }
,

 _SetCoustominCookie:
function(selectElememt){//@priavted
        var array=new Array();    
        
for(var i=0;i<selectElememt.length-1;i++){         
         array[i]
= selectElememt.options[i].value;    
        }

        
return array;
        
     }
,
getCoustom:
function(){   //获取本地得页面定制配置 
   for(var i=0;i<this.length;i++){
      
var divname=templatePre+i;
     
      
this._getSelectContext(divname,i);
      }
 
    }
,
 _getSelectContext:
function(item,index){//@priavted获得栏目得选择内容
    
    
var array= this.localArray[index];
    
var selectElememt=document.createElement('select');
    
var name=item+"_select";
      selectElememt.id
=item+"_select";
      selectElememt.size
=5;
      selectElememt.multiple 
=true;
      
    
tryfor(var i=0;i<array.length;i++){
        
var page=this._getPageitem(array[i]);
        
var oValue=array[i];        
        
var oText=page.name;
        selectElememt.options[i]
= new Option(oText, oValue, falsefalse);
     }
  }
catch(e){}      
        selectElememt.options[selectElememt.length]
=new Option("--------------","spacer",false,false);    
        
var div=$(item);
        div.appendChild(selectElememt);
  }


}


/* ----------------------------------cookie Class-------------------------------------------------------------- */
var Cookie=Class.create();
 Cookie.prototype
={
  initialize:
function(){
    
this.format=[];
    
  
if(this.GetValue("format")==null)
      
      
this.SetValue("format",defaultformat.join("!"),1);
        
this.format=defaultformat;
      }

  
else 
      
{var array=this.GetValue("format").split("!");
      
for(var i=0;i<array.length;i++){
      
this.format[i]=array[i].split(",");   
          }

      }

      

    }
,
  SetValue:
function(name,value,hours,path,domain,secure){  //设置cookie值
    var str=new String();
    
var nextTime=new Date();
    nextTime.setHours(nextTime.getHours()
+hours);
    str
=name+"="+escape(value);
    
if(hours)
      str
+=";expires="+nextTime.toGMTString();
    
if(path)
      str
+=";path="+path;
    
if(domain)
      str
+=";domain="+domain;
    
if(secure)
      str
+=";secure";
    document.cookie
=str;
    }

  GetValue:
function(name)//得到cookie值
    var rs=new RegExp("(^|)"+name+"=([^;]*)(;|$)","gi").exec(document.cookie),tmp;
    
if(tmp=rs)
      
return unescape(tmp[2]);
    
return null;
    }
 
 }
  

/* ----------------------------------util function------------------------------------ */
   
function arrangeContentProvider( direction, columnID ) {
      
var column=columnID-1;
      
var  columnname =templatePre+column+"_select";    
      
var multi = 0;    //判断是否多选择了元素
      var selectElement=$(columnname);

      
for (var i = 0; i < selectElement.length; i++{
        
if (selectElement.options[i].selected) {
            
if(multi == 0{
                multi 
= 1;
            }
 else {
                alert(
"Please select one channel at a time");
                
return true;
            }

        }
    

      }

      selection 
= selectElement.selectedIndex;

      
if (selection != -1 &&selectElement.options[selection].value != "spacer"{
      oText 
= selectElement.options[selection].text;
      oValue 
= selectElement.options[selection].value;
      
if (selection > 0 && direction == 0{             //方向得实现:  0==向上
      selectElement.options[selection].text =selectElement.options[selection-1].text;
      selectElement.options[selection].value
=selectElement.options[selection-1].value;
      selectElement.options[selection
-1].text = oText;
      selectElement.options[selection
-1].value = oValue;
      selectElement.selectedIndex
--;
      }
 
      
else if (selection < selectElement.length-2 && direction == 1//方向向下
     selectElement.options[selection].text=selectElement.options[selection+1].text;
     selectElement.options[selection].value 
= selectElement.options[selection+1].value;
     selectElement.options[selection
+1].text = oText;
     selectElement.options[selection
+1].value = oValue;
     selectElement.selectedIndex
++;
      }

      }
 
      
else return false;
      }
 
 
function switchColumns( sourceColumnID, destinationColumnID ) {
    
    
var srcColumn=sourceColumnID-1;
    
var desColumn=destinationColumnID-1;
    
var srcName=templatePre+srcColumn+"_select";
    
var desName=templatePre+desColumn+"_select";

     
    
var srcselectElement=$(srcName);
    
var desselectElement=$(desName);


    
    selection 
= srcselectElement.selectedIndex;
    
if (selection != -1 && srcselectElement.options[selection].value != "spacer"{
        oText 
= srcselectElement.options[selection].text;
        oValue 
=srcselectElement.options[selection].value;

        destinationLength 
= desselectElement.length;
        srcselectElement.options[selection] 
= null;
        desselectElement.options[destinationLength] 
= new Option(oText, oValue, falsefalse);
        desselectElement.selectedIndex 
= desselectElement.length-1;
        arrangeContentProvider(
0,destinationColumnID)

    }
 
    
else return false;
}



2.模版



 
var defaultformat=[[0,1,2,3],[4,5,6,7,8,9,10],[11,12,13]];
 
var templatePre="trs_template_"


var mytemplate={
   Lable0:
{name:"办事指南",url:"/coustom/IndexAction.do?templatepath=bszn"},
   Lable1:
{name:"受理机构",url:"/coustom/IndexAction.do?templatepath=sljg"},
   Lable2:
{name:"上海概览",url:"/coustom/IndexAction.do?templatepath=shgl"},
   Lable3:
{name:"民意调查百姓评价",url:"/coustom/IndexAction.do?templatepath=mydc"},
   Lable4:
{name:"表格下载",url:"/coustom/IndexAction.do?templatepath=bgxz"},
   Lable5:
{name:"上海地图",url:"/coustom/IndexAction.do?templatepath=shdt"},
   Lable6:
{name:"便民回答",url:"/coustom/IndexAction.do?templatepath=bmhd"},
   Lable7:
{name:"公众热键",url:"/coustom/IndexAction.do?templatepath=gzrj"},
   Lable8:
{name:"服务导航",url:"/coustom/IndexAction.do?templatepath=fwdh"},
   Lable9:
{name:"城市生活",url:"/coustom/IndexAction.do?templatepath=cssh"},
   Lable10:
{name:"政策法规",url:"/coustom/IndexAction.do?templatepath=zcfg"},
   Lable11:
{name:"网上服务",url:"/coustom/IndexAction.do?templatepath=wsfw"},
   Lable12:
{name:"每日更新",url:"/coustom/IndexAction.do?templatepath=mrgx"},
   Lable13:
{name:"实用信息查询",url:"/coustom/IndexAction.do?templatepath=syxx"}
   
}



3。主页面
    <META http-equiv=Content-Type content="text/html; charset=UTF-8">
<SCRIPT SRC="prototype.js"></SCRIPT>
<SCRIPT SRC="template.js"></SCRIPT>
<SCRIPT SRC="tmfunction.js"></SCRIPT>
<SCRIPT language=JavaScript>
<!--


     
var cookie=new Cookie();
     
var arrayformat=[];   //栏目分组二为数组
     dealCookie(arrayformat);
  
//-->
</SCRIPT>



</HEAD>
<!--~========================= END DOCUMENT HEADER =========================~-->



<BODY bgColor=#ffffff leftMargin=0 topMargin=0 onload="new Coustom().getCoustom()">


4。定制页面

<SCRIPT SRC="prototype.js"></SCRIPT>
<SCRIPT SRC="template.js"></SCRIPT>
<SCRIPT SRC="tmfunction.js"></SCRIPT>

<SCRIPT language=JavaScript>

  
var cookie=new Cookie();   //全局cookie变量
  var arrayformat=[];   //栏目分组二为数组
  dealCookie(arrayformat);
 
</script>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
</HEAD>






<BODY text=#000000 bgColor=#264989 leftMargin=0 topMargin=0 onload="getLocal()">
<META http-equiv=Pragma content=no-cache>
<META http-equiv=Cache-control content=no-cache>





<!--BODY ONLOAD=setWindowName(); BGCOLOR="#ffffff" leftMargin=0 rightMargin=0 topMargin=0 marginheight="0" marginwidth="0"-->