`

关于list列表框的一些工具方法

阅读更多

(2007-08-16 15:15:22)   乔华(56128813)
<SCRIPT language="javascript">
 /***********************************************************************
  * 文 件 名:selectListTools.js
  * 文件描述:关于list列表框的一些工具方法
  * 主要方法:
  *          1, moveUp(oSelect,isToTop) --- 向上移动一个list列表框的选中项目,
  *                                                                    可以支持多选移动,可以设置是否移动到顶层
  *          2, moveDown(oSelect,isToBottom)---- 向下移动一个list列表框的选中项目,
  *                                                                     可以支持多选移动,可以设置是否移动到底层
  *          3, moveSelected(oSourceSel,oTargetSel) ------ 在两个列表框之间转移数据
  *          4, moveAll(oSourceSel,oTargetSel)--------- 转移两个列表框之间的全部数据
  *          5, deleteSelectItem(oSelect) ----------- 删除所选的项目
  *
 ***********************************************************************/
 
 /**
  * 使选中的项目上移
  *
  * oSelect: 源列表框
  * isToTop: 是否移至选择项到顶端,其它依次下移,
  *          true为移动到顶端,false反之,默认为false
  */
 function moveUp(oSelect,isToTop)
 {
     //默认状态不是移动到顶端
     if(isToTop == null)
         var isToTop = false;
        
     //如果是多选------------------------------------------------------------------
     if(oSelect.multiple)
     {
         for(var selIndex=0; selIndex<oSelect.options.length; selIndex++)
         {
             //如果设置了移动到顶端标志
             if(isToTop)
             {
                 if(oSelect.options[selIndex].selected)
                 {
                     var transferIndex = selIndex;
                     while(transferIndex > 0 && !oSelect.options[transferIndex - 1].selected)
                     {
                         oSelect.options[transferIndex].swapNode(oSelect.options[transferIndex - 1]);
                         transferIndex --;
                     }
                 }
             }
             //没有设置移动到顶端标志
             else
             {
                 if(oSelect.options[selIndex].selected)
                 {
                     if(selIndex > 0)
                     {
                         if(!oSelect.options[selIndex - 1].selected)
                             oSelect.options[selIndex].swapNode(oSelect.options[selIndex - 1]);
                     }
                 }
             }
         }
     }
     //如果是单选--------------------------------------------------------------------
     else
     {
         var selIndex = oSelect.selectedIndex;
         if(selIndex <= 0)
             return;
         //如果设置了移动到顶端标志
         if(isToTop)
         {
             while(selIndex > 0)
             {
                 oSelect.options[selIndex].swapNode(oSelect.options[selIndex - 1]);
                 selIndex --;
             }
         }
         //没有设置移动到顶端标志
         else       
             oSelect.options[selIndex].swapNode(oSelect.options[selIndex - 1]);
     }
 }

/**
  * 使选中的项目下移
  *
  * oSelect: 源列表框
  * isToTop: 是否移至选择项到底端,其它依次上移,
  *          true为移动到底端,false反之,默认为false
  */
 function moveDown(oSelect,isToBottom)
 {
     //默认状态不是移动到顶端
     if(isToBottom == null)
         var isToBottom = false;
        
     var selLength = oSelect.options.length - 1;
    
     //如果是多选------------------------------------------------------------------
     if(oSelect.multiple)
     {
         for(var selIndex=oSelect.options.length - 1; selIndex>= 0; selIndex--)
         {
             //如果设置了移动到顶端标志
             if(isToBottom)
             {
                 if(oSelect.options[selIndex].selected)
                 {
                     var transferIndex = selIndex;
                     while(transferIndex < selLength && !oSelect.options[transferIndex + 1].selected)
                     {
                         oSelect.options[transferIndex].swapNode(oSelect.options[transferIndex + 1]);
                         transferIndex ++;
                     }
                 }
             }
             //没有设置移动到顶端标志
             else
             {
                 if(oSelect.options[selIndex].selected)
                 {
                     if(selIndex < selLength)
                     {
                         if(!oSelect.options[selIndex + 1].selected)
                             oSelect.options[selIndex].swapNode(oSelect.options[selIndex + 1]);
                     }
                 }
             }
         }
     }
     //如果是单选--------------------------------------------------------------------
     else
     {
         var selIndex = oSelect.selectedIndex;
         if(selIndex >= selLength - 1)
             return;
         //如果设置了移动到顶端标志
         if(isToBottom)
         {
             while(selIndex < selLength - 1)
             {
                 oSelect.options[selIndex].swapNode(oSelect.options[selIndex + 1]);
                 selIndex ++;
             }
         }
         //没有设置移动到顶端标志
         else       
             oSelect.options[selIndex].swapNode(oSelect.options[selIndex + 1]);
     }
 }

/**
  * 移动select的部分内容,必须存在value,此函数以value为标准进行移动
  *
  * oSourceSel: 源列表框对象
  * oTargetSel: 目的列表框对象
  */
 function moveSelected(oSourceSel,oTargetSel)
 {
     //建立存储value和text的缓存数组
     var arrSelValue = new Array();
     var arrSelText = new Array();
     //此数组存贮选中的options,以value来对应
     var arrValueTextRelation = new Array();
     var index = 0;//用来辅助建立缓存数组
    
     //存储源列表框中所有的数据到缓存中,并建立value和选中option的对应关系
     for(var i=0; i<oSourceSel.options.length; i++)
     {
         if(oSourceSel.options[i].selected)
         {
             //存储
             arrSelValue[index] = oSourceSel.options[i].value;
             arrSelText[index] = oSourceSel.options[i].text;
             //建立value和选中option的对应关系
             arrValueTextRelation[arrSelValue[index]] = oSourceSel.options[i];
             index ++;
         }
     }
    
     //增加缓存的数据到目的列表框中,并删除源列表框中的对应项
     for(var i=0; i<arrSelText.length; i++) 
     {
         //增加
         var oOption = document.createElement("option");
         oOption.text = arrSelText[i];
         oOption.value = arrSelValue[i];
         oTargetSel.add(oOption);
         //删除源列表框中的对应项
         oSourceSel.removeChild(arrValueTextRelation[arrSelValue[i]]);
     }
 }

/**
  * 移动select的整块内容
  *
  * oSourceSel: 源列表框对象
  * oTargetSel: 目的列表框对象
  */
 function moveAll(oSourceSel,oTargetSel)
 {
     //建立存储value和text的缓存数组
     var arrSelValue = new Array();
     var arrSelText = new Array();
    
     //存储所有源列表框数据到缓存数组
     for(var i=0; i<oSourceSel.options.length; i++)
     {
         arrSelValue[i] = oSourceSel.options[i].value;
         arrSelText[i] = oSourceSel.options[i].text;
     }
    
     //将缓存数组的数据增加到目的select中
     for(var i=0; i<arrSelText.length; i++) 
     {
         var oOption = document.createElement("option");
         oOption.text = arrSelText[i];
         oOption.value = arrSelValue[i];
         oTargetSel.add(oOption);
     }
    
     //清空源列表框数据,完成移动
     oSourceSel.innerHTML = "";
 }

/**
  * 删除选定项目
  *
  * oSelect: 源列表框对象
  */
 function deleteSelectItem(oSelect)
 {
     for(var i=0; i<oSelect.options.length; i++)
     {
         if(i>=0 && i<=oSelect.options.length-1 && oSelect.options[i].select

分享到:
评论

相关推荐

    组态王可调字体控件 combo list text

    列表框的名称”kinglist.kinglist1“。下拉组合框的名称”kingcombo.UserControl1"。里面的属性都改成了组态王可以支持的属性。字体用中文string,例如:“宋体”,大小用数字long例如:16。也可以连接到数据词典,...

    java8集合源码-Java-Android-Framework-List:所有java框架列表

    java8集合源码Java-Android-Framework-List 所有java框架列表 很棒的 Java [![很棒] Java 框架、库和软件。 内容 项目 豆映射 简化 bean 映射的框架。 - 为类型安全域模型验证和映射提供流畅的 API。 它使用注释、...

    list-of-lists:有用的开源项目和开发人员工具列表的元列表

    有用的开源项目和开发人员工具列表的元列表 工具 系统管理工具: : 字体端工具: : 编译为 JS 的语言列表: : 使用前端工具美化: : RSS 阅读器列表: : 作业队列、消息队列和其他队列列表 - 交易工具列表 - ...

    VB磁盘碎片整理-分类整理磁盘文件.rar

    获得文件夹的个数,引用一个Stripting Runtime 对象,将文件列表框中显示的文件名添加到列表框中,在刷新数据之前清空List控件中的信息,检索相同的扩展名文件等,虽然是磁盘碎片整理的,但实质上就是文件的操作。

    .NET的测试工具和框架列表:。.NET的自动测试(TDDBDDATDDSBE)工具和框架列表

    NET的自动测试(TDD / BDD / ATDD / SBE)工具和框架列表这是与测试的方法和类型有关的.NET自动化测试框架的列表: 测试驱动开发(TDD) 行为驱动开发(BDD) 范例说明(SBE) 验收测试驱动开发(ATDD) 基于属性的...

    List-of-Tools:工具列表和用法

    工具工具清单软件工具版本关联物联网渗透测试框架Expliot框架v0.7.2 IoTSecFuzz v1.0 Routersploit v3.4.1固件逆向工程工具Binwalk v2.2.0坚定的行者 FACT核心v3.1开发版探伤仪v1.31固件modkit r2吉德拉筛子固件打...

    awesome-open-hardware-verification:免费和开源硬件验证工具和框架列表

    开放式硬件验证 精选的免费和开源硬件验证工具和框架列表。... /用“新语言/工具Y ”编写的方法。 看起来似乎很卑鄙,但是作为一种新的设计语言,从理论上讲,它使验证变得更加容易,不足以将其列入此

    EaglePHP框架1.9

    12、新增Redis缓存操作类,为string(字符串)、list(链表)、set(集合)、zset(有序集合)、hash提供丰富的操作方法。 13、修改Model数据模型类支持对请求数据进行插入和更新的预处理和后处理回调函数。 14、...

    awesome-qt:精选的Qt框架工具,库和资源列表

    awesome-qt:精选的Qt框架工具,库和资源列表

    quill-task-list:主轴编辑器的任务列表模块

    奎尔没有内置复选框列表()。 这是一个非常懒惰的插件,它增加了对此的支持。 这但目前效果很好。 安装 npm i quill-task-list 或者 yarn add quill-task-list 用法 在主要quill.js之后,需要或在您的interwebs...

    Excel VBA实用技巧大全 附书源码

    04147设置单元格区域的除对角框线以外的全部边框 04148删除单元格区域的全部边框 04149设置单元格的颜色和背景 04150设置单元格的格式 04151设置单元格的对齐方式 04152缩小单元格内容以全部显示 04153设定、删除...

    awesome-ui-component-library:用于UI样式工具包的框架组件库的精选列表

    很棒的UI组件库 UI样式/工具包/设计系统的框架组件库的精选列表设计系统-设计系统This list doesn't include individual component libraries like button, select, forms, etc 相关列表-内容React -基于React组件 -...

    初级java笔试题-The-UWP-Tools-List:UWP工具列表。潜在有用的UWP(Windows10通用Windows平台)框架、工

    初级java笔试题注意:此列表中代表了支持 UWP 平台的个人的大量志愿工作。 如果可以,请考虑向作者提供反馈,测试他们的代码并提交问题报告/功能请求,并为他们的项目点击 Star 按钮。 如果此列表中缺少您最喜欢的...

    ListOfGithubLists:github列表列表

    github列表列表 如今,创建github列表非常流行,因此这是另一个。 欢迎拉取请求 清单 受到awesome-python的启发 精选的很棒的机器学习框架,库和软件列表 精选的Python框架,库和软件的精选清单 精选的Scala框架,...

    基于wepy 框架构建的微信小程序开发的线上电子商城系统

    商品列表搜索 goods_list.wpy 基于wepy 框架构建的微信小程序开发的线上电子商城系统 基于wepy 框架构建的微信小程序开发的线上电子商城系统 基于wepy 框架构建的微信小程序开发的线上电子商城系统 基于wepy ...

    VBA常用技巧

    技巧109组合框和列表框添加列表项的方法245 109-1使用RowSource属性添加列表项245 109-2使用List属性添加列表项246 109-3使用AddItem方法添加列表项247 技巧110去除列表框数据源的重复值和空格249 技巧111移动列表框...

    awesome-shell:精妙的命令行框架,工具包,指南和gizmos的精选列表。 受到awesome-php的启发

    awesome-shell:精妙的命令行框架,工具包,指南和gizmos的精选列表。 受到awesome-php的启发

    arcgis工具

    方法一.carvert to Ananotation ,方法二.Draw工具条 方法三.从其他地方转换注记图层 14. 查看特定区域范围内的某种地物分布情况 Selection / select by location 15. 如何用面生成中线 先把数据转成coverage格式...

    EditPlus 2整理信箱的工具

    $(WindowList) 显示当前窗口列表并选择特定文件 例子 1. Java 编译器 菜单文本:Java 编译器 命令:c:\java\bin\javac.exe 参数:"$(FilePath)" 初始目录:$(FileDir) 捕获输出:开启 要运行已编译的 Java 类...

Global site tag (gtag.js) - Google Analytics