主题:  关于处理列表/菜单框操作的几个小函数,希望有用。

浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#12005/4/4 22:47:28
好些日子没来了。最近做客户端时,要动态处理列表框,写了一些还算比较有用的小函数,与大家共享。

//在末尾添加一项
function addOption(objSel,text,value){
var opt=new Option();
opt.text=text;
opt.value=value;
objSel.options.add(opt);
}

//在指定位置插入一项
function insertOption(objSel,text,value,pos){
var opt=new Option();
opt.text=text;
opt.value=value;
objSel.options.add(opt,pos);
}

//删除指定项
function delOption(objSel,text,value){
for(var i=0;i<objSel.options.length;i++){
if(objSel.options[i].text==text && objSel.options[i].value==value){
objSel.remove(i);
break;
}
}
}

//删除所选项
function delOptions(objSel){
if(objSel.selectedIndex!=-1){
do{
objSel.options.remove(objSel.selectedIndex);
}while(objSel.selectedIndex!=-1);
}
}

//删除所有项
function clearOptions(objSel){
objSel.options.length=0;
}

//向上移动所选项
function moveupOptions(objSel){
if(objSel.selectedIndex!=-1){
addOption(objSel,"","diff");
for(var i=0;i<objSel.options.length-1;i++){
if(objSel.options[i].selected==true){
var newpos=i-1;
if(newpos<0)newpos=objSel.options.length-1;
objSel.options[i].swapNode(objSel.options[newpos]);
}
}
delOption(objSel,"","diff");
}
}

//向下移动所选项
function movedownOptions(objSel){
if(objSel.selectedIndex!=-1){
insertOption(objSel,"","diff",0);
for(var i=objSel.options.length-1;i>0;i--){
if(objSel.options[i].selected==true){
var newpos=i+1;
if(newpos>objSel.options.length-1)newpos=0;
objSel.options[i].swapNode(objSel.options[newpos]);
}
}
delOption(objSel,"","diff");
}
}

缩进没有了,对付着看吧。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#22005/4/4 22:51:11
函数说明(支持多选择):

addOption(objSel,text,value):在列表/菜单框 objSel 末尾添加一项,其值为 value,显示文本为 text。
insertOption(objSel,text,value,pos):在列表/菜单框 objSel 指定位置 pos 处插入一项,其值为 value,显示文本为 text。
delOption(objSel,text,value):删除列表/菜单框 objSel 中值为 value、显示文本为 text 的项。
delOptions(objSel):删除列表/菜单框 objSel 中选中的项。
clearOptions(objSel):清空(删除)列表/菜单框 objSel 中的所有项。
moveupOptions(objSel):向上移动列表/菜单框 objSel 中选中的项。
movedownOptions(objSel):向下移动列表/菜单框 objSel 中选中的项。

移动选项时,使用了交换节点函数:swapNode()。为了支持多选移动,先临时增加了一个option项,完成操作后再删除这个临时项。



浮尘

职务:普通成员
等级:3
金币:7.0
发贴:1258
#32005/4/4 23:12:14
使用示例:

[Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]