<select><option></option></select> 操作
转载请注明来源:https://www.cnblogs.com/hookjc/
{
var mSel1=s1;
var mSel2=s2;
var mThis=this;
var mVars=myvars.split('|');
var mCallDbClick=calldbclick;
mSel1.attachEvent('ondblclick',function(){mThis.SwapOptions(mSel1,mSel2);});
mSel2.attachEvent('ondblclick',function(){mThis.SwapOptions(mSel2,mSel1);});
//双击事件的处理
this.SwapOptions=function(from,to)
{
if(from.selectedIndex<0) return;
var op1=from.options[from.selectedIndex];
//如果为空
if(op1.innerHTML=='') return;
var op2=new Option(op1.text,op1.value);
var len=to.options.length;
to.options[len]=op2;
for(var i=0;i<mVars.length;i++)
to.options[len].setAttribute(mVars[i],op1.getAttribute(mVars[i]));
from.options[from.selectedIndex]=null;
if(mCallDbClick!='')eval(mCallDbClick+'();');
}
this.GetSum=function(obj,str)
{
var ret=new Array();
arr=str.split("|");
for(var n=0;n<arr.length;n++)
ret[n]=0;
for(i=0;i<obj.options.length;i++)
{
for(var n=0;n<arr.length;n++)
ret[n]+=obj.options[i].getAttribute(arr[n])*1;
}
return ret;
}
//根据查询条件筛选
this.Query=function(sel,where)
{
for(i=0;i<sel.options.length;i++)
{
t=sel.options[i];
var ret=eval(where);
if(ret)
{
if(sel.options[i].innerHTML=='')
sel.options[i].innerHTML=sel.options[i].oldtxt;
}else
{
if(sel.options[i].innerHTML!='')
{
sel.options[i].oldtxt=sel.options[i].innerHTML;
sel.options[i].innerHTML='';
}
}
}
this.Sort(sel);
}
排序:
this.Sort=function(obj)
{
var arr = new Array();
var len=obj.options.length;
for(var i=0; i<len; i++)
{
var attrs = new Array();
for(var n=0;n<mVars.length;n++)
attrs[n]=obj.options[i].getAttribute(mVars[n]);
attrs[n]=obj.options[i].getAttribute('oldtxt');
arr[i]={text:obj.options[i].innerHTML,html:obj.options[i].value,attr:attrs};
}
arr.sort(this.SortFun);
for(var i=0; i<len; i++)
{
obj.options[i].innerHTML=arr[i].text;
obj.options[i].value=arr[i].value;
for(var n=0;n<mVars.length;n++)
obj.options[i].setAttribute(mVars[n],arr[i].attr[n]);
obj.options[i].oldtxt=arr[i].attr[n];
}
}
this.SortFun=function(x,y){if(x.text>y.text) return -1; else if(x.text<y.text) return 1;else return 0;}
this.GetData=function(obj)
{
ret='';
for(i=0;i<obj.options.length;i++)
ret+=','+obj.options[i].value;
return ret.substr(1);
}
}