Web页面中两个listbox的option的转移

  

Html:

<div><span>所选时间:</span><select id="xuanyongTimelb" style="width: 200px; height: 130px;" multiple="multiple"></select></div>
                        <div class="label"><span id="righttimeid">---></span><span id="lefttimeid"><---</span></div>
                        <div>
                            <span>可用时间:</span><select id="keyongTimelb" style="width: 200px; height: 130px;" multiple="multiple">
                                @*       <option>0:00</option>*@
                                <option tag="1">0:30</option>
                                <option tag="2">1:00</option>
                                <option tag="3">1:30</option>
                                <option tag="4">2:00</option>
                                <option tag="5">2:30</option>
                                <option tag="6">3:00</option>
                                <option tag="7">3:30</option>
                                <option tag="8">4:00</option>
                                <option tag="9">4:30</option>
                                <option tag="10">5:00</option>
                                <option tag="11">5:30</option>
                                <option tag="12">6:00</option>
                                <option tag="13">6:30</option>
                                <option tag="14">7:00</option>
                                <option tag="15">7:30</option>
                                <option tag="16">8:00</option>
                                <option tag="17">8:30</option>
                                <option tag="18">9:00</option>
                                <option tag="19">9:30</option>
                                <option tag="20">10:00</option>
                                <option tag="21">10:30</option>
                                <option tag="22">11:00</option>
                                <option tag="23">11:30</option>
                                <option tag="24">12:00</option>
                                <option tag="25">12:30</option>
                                <option tag="26">13:00</option>
                                <option tag="27">13:30</option>
                                <option tag="28">14:00</option>
                                <option tag="29">14:30</option>
                                <option tag="30">15:00</option>
                                <option tag="31">15:30</option>
                                <option tag="32">16:00</option>
                                <option tag="33">16:30</option>
                                <option tag="34">17:00</option>
                                <option tag="35">17:30</option>
                                <option tag="36">18:00</option>
                                <option tag="37">18:30</option>
                                <option tag="38">19:00</option>
                                <option tag="39">19:30</option>
                                <option tag="40">20:00</option>
                                <option tag="41">20:30</option>
                                <option tag="42">21:00</option>
                                <option tag="43">21:30</option>
                                <option tag="44">22:00</option>
                                <option tag="45">22:30</option>
                                <option tag="46">23:00</option>
                                <option tag="47">23:30</option>
                                <option tag="48">24:00</option>
                            </select>
                        </div>

我 在option自定了“tag”属性,目的,是实现option在两个listbox之间转移之后,要将两边都要进行“排序”(这点很重要,希望大家注意下,往往有些option的顺序是很有意义的),

也许大家会问我,问什么不直接在option的value上赋值?

回答是:(视情况而定),因为,option的text往往不能代表我们要获取的值,而我们有时必须要借助value或者自定的属性的值,这里,我就写了最通用的方法,这样,无论什么时候,都不妨碍,我的option的val定义什么要的值(当然,用不用value,听你的,程序员本来就是艺术家);

  下面就讲解下js的部分,我先贴出代码:

 //备份时间  排序
        //向右
        function TimeListBoxRight() {
            var leftlb = document.getElementById("xuanyongTimelb");
            var rightlb = document.getElementById("keyongTimelb");

            var arrtext = new Array();
            var arrvalue = new Array();
            var arrtag = new Array();
            var arrindex = new Array();

            var j = 0;
            for (var i = 0; i < leftlb.options.length; i++) {
                if (leftlb.options[i].selected == true) {
                    //leftlb.options.add(new Option(rightlb.options[i].text, rightlb.options[i].value));
                    //rightlb.options.remove(i);
                    arrtext[j] = leftlb.options[i].text;
                    arrvalue[j] = leftlb.options[i].value;
                    arrtag[j] = leftlb.options[i].getAttribute("tag");
                    arrindex[j] = i;
                    j++;
                }
            }

            //添加
            for (var k = 0; k < arrvalue.length; k++) {
                var opt = new Option();
                opt.value = arrvalue[k];
                opt.text = arrtext[k];
                opt.setAttribute("tag", arrtag[k]);
                rightlb.options[rightlb.options.length] = opt;
            }

            //冒泡排序
            for (var m = 0; m < rightlb.options.length - 1; m++) {
                for (var l = 0; l < rightlb.options.length - 1 - m; l++) {
                    if (Number(rightlb.options[l].getAttribute("tag")) > Number(rightlb.options[l + 1].getAttribute("tag"))) {

                        var temp = new Option();
                        temp.value = rightlb.options[l].value;
                        temp.text = rightlb.options[l].text;
                        temp.setAttribute("tag", rightlb.options[l].getAttribute("tag"));

                        rightlb.options[l].value = rightlb.options[l + 1].value;
                        rightlb.options[l].text = rightlb.options[l + 1].text;
                        rightlb.options[l].setAttribute("tag", rightlb.options[l + 1].getAttribute("tag"));

                        rightlb.options[l + 1].value = temp.value;
                        rightlb.options[l + 1].text = temp.text;
                        rightlb.options[l + 1].setAttribute("tag", temp.getAttribute("tag"));

                    }
                }
            }

            //删除
            for (var n = arrindex.length - 1; n >= 0; n--) {
                leftlb.options.remove(arrindex[n]);
            }

            if (leftlb.options.length <= 0) {
                $("#righttimeid").disable = true;
            }

        }

        //Item 向左
        function TimeListBoxLeft() {
            var leftlb = document.getElementById("xuanyongTimelb");
            var rightlb = document.getElementById("keyongTimelb");

            var arrtext = new Array();
            var arrvalue = new Array();
            var arrtag = new Array();
            var arrindex = new Array();

            var j = 0;
            for (var i = 0; i < rightlb.options.length; i++) {
                if (rightlb.options[i].selected == true) {
                    //leftlb.options.add(new Option(rightlb.options[i].text, rightlb.options[i].value));
                    //rightlb.options.remove(i);
                    arrtext[j] = rightlb.options[i].text;
                    arrvalue[j] = rightlb.options[i].value;
                    arrtag[j] = rightlb.options[i].getAttribute("tag");
                    arrindex[j] = i;
                    j++;
                }
            }

            //添加
            for (var k = 0; k < arrvalue.length; k++) {
                var opt = new Option();
                opt.value = arrvalue[k];
                opt.text = arrtext[k];
                opt.setAttribute("tag", arrtag[k]);
                leftlb.options[leftlb.options.length] = opt;
            }

            //冒泡排序
            for (var m = 0; m < leftlb.options.length - 1; m++) {
                for (var l = 0; l < leftlb.options.length - 1 - m; l++) {
                    if (Number(leftlb.options[l].getAttribute("tag")) > Number(leftlb.options[l + 1].getAttribute("tag"))) {

                        var temp = new Option();
                        temp.value = leftlb.options[l].value;
                        temp.text = leftlb.options[l].text;
                        temp.setAttribute("tag", leftlb.options[l].getAttribute("tag"));

                        leftlb.options[l].value = leftlb.options[l + 1].value;
                        leftlb.options[l].text = leftlb.options[l + 1].text;
                        leftlb.options[l].setAttribute("tag", leftlb.options[l + 1].getAttribute("tag"));

                        leftlb.options[l + 1].value = temp.value;
                        leftlb.options[l + 1].text = temp.text;
                        leftlb.options[l + 1].setAttribute("tag", temp.getAttribute("tag"));

                    }
                }
            }

            //删除
            for (var n = arrindex.length - 1; n >= 0; n--) {
                rightlb.options.remove(arrindex[n]);
            }

            if (rightlb.options.length <= 0) {
                $("#lefttimeid").disable = true;
            }

        }

  上面的代码也已经很详细了。

  注意点(或许能对你有些用处):

  1.在option上自定的属性(“tag”)后,你需要明白,如果通过js 得到 “tag”,或者设置“tag”的值,

leftlb.options[i].getAttribute("tag"); //获取tag的值
leftlb.options[l + 1].setAttribute("tag", temp.getAttribute("tag"));  //设置“tag”的值

  2.html的 Select里面的option 在javascript中如何定义:  

var opt = new Option();//在给“tag”赋值的时候,切记,不要学text,value那样干,(或许 . 你用来会很顺手);

  3.当我们在转移之后,我们又重新排序,这里,你想用什么方法排就用什么方法排(算法的灵活运用)。当然,还是要注意:tag的赋值;

//下面的方法,我努力尝试,不过,不管用;
var temp = leftlb.options[l];
leftlb.options[l] = leftlb.options[l+1];
leftlb.options[l+1] = temp;
时间: 2024-10-13 03:00:45

Web页面中两个listbox的option的转移的相关文章

web页面中参数的传递方法

在web页面中参数的传递方法多样,主要有以下几种: Viewstate,Querystring,Session, Application,Cookie,Cache. Viewstate: 特点:服务启启动的各种控件的视图状态:包括控件的所有属性值:Enableviewstate可以启用和禁用视图状态:        优点:防止新产生一个页面实例后,丢失前一个页面的状态信息: 例如:在用户登录注册验证过程中,无须使用导致服务器往返行程的代码,我们只需要在客户端进行验证就可以了.另外有些控件的初始化

如何在Web页面中集成文件上传功能

当前,个人主页制作非常流行.当用户开发好自己的页面时,需要将文件传输到服务器上,解决这个问题的方法之一 是运行FTP服务器并将每个用户的FTP默认目录设为用户的Web主目录,这样用户就能运行FTP客户程序并上传文件到指定的 Web目录.由于Windows NT 和 Windows98均不提供直接的基于窗口形式的FTP客户程序,用户必须懂得如何使用基于命令行 的FTP客户,或掌握一种新的基于窗口形式的FTP客户程序.因此,这种解决方案仅对熟悉FTP且富有经验的用户来说是可行 的. 如果我们能把文件

web页面中可以包含多个对象

# encoding=utf-8 #python 2.7.10 #xiaodeng #web页面中可以包含多个对象 #HTTP权威指南 10页 #应用程序完成一项任务时通常会发布多个http事务.如:web浏览器会发布一系列http事务来获取一个包含了丰富的图片的web页面. #http事务怎么运作呢? 1.执行一个事务来获取描述页面布局的html框架 2.然后发布另外的http事务来获取嵌入的图片.图像.java小程序.这些资源可能在不同的服务器上. 因此: 一个web页面不是单个资源,通常是

使用textarea标签按Enter键后web页面中成换行 vue

对于textarea标签的换行问题,其实就是要将textarea里的Enter键替换成web页面中"<br/>". 以下是我的一些方法. 首先我是写一个方法(methods) formatSolution(s) { if (s) { return s.replace(/\s/g,'<br/>') } else return '' }, 然后在到html找到相应的位置. <tbody> <tr v-for="(x,index) in f

php中调用这个功能可以在web页面中显示hello world这个经典单词

php程序写的时间长了,自然对他所提供的功能了如指掌,他所提供的一大堆功能,真是觉得很好用,但有时候会发现php也缺少一些功能,自己总是会产生为php添加一些自定义的功能的想法.久而久之,终于今天憋不住了,开始动手研究如何添加. 下载一个php的源代码包,这里使用的是php 4.0.5版,解压后会看到php的根目录下会有README.EXT_SKEL这样一个文件,打开详细阅读了一下,发现了一个非常好用的工具,这个工具可以帮你构建一个空的php扩展,然后你向里面添加相应的代码就可以完成你自己的功能

FineBI如何在web页面中嵌入式集成

1. API嵌入集成 1.1 描述 FineBI是基于B/S架构的浏览器/服务器模式,现在用户开发的系统基本上趋向于B/S架构的浏览器/服务器模式,因此有些页面完全可以直接采用web页面嵌入式集成的简易方式完成集成.而且些因为框架的原因可以采用json的调用方式进行集成.通过集成,用户从自己的系统通过链节使用浏览器访问FineBI的服务器,从而在自己系统内调用BI的web页面,来实际嵌入式集成.这种集成通常会有两种方式:一种是直接使用URL链节,另一种方式是通过js的调用json来获得分析模板.

asp.net多线程在web页面中简单使用

需求:一个web页面 default.aspx 里面有两个控件GridView1,GridView2,通过两个线程分别加载绑定数据. 绑定GridView1:void BindCategory()    { SqlConnection conn = ReturnSqlconn();        SqlCommand comm = new SqlCommand("select * from category", conn);        conn.Open();        Sql

WEB页面中常见的四种控件的必须的测试

以下为常规的需求,除非需求有明确说明,如密码输入框中可以输入空格. 输入框 1. 为空,但页面中明确说明不能为空(带有星号或者只有这一个输入框),有以下两种情况: a. 不进行输入或者使其为空:焦点离开后应有相应的提示,提交后页面无跳转并仍有相应的提示. b. 输入框中存在一个或者多个空格:焦点离开后空格被自动清除并有相应的提示,提交后页面无跳转并仍有相应的提示. 2. 输入长度超限,有以下两种情况: a. 可以输入任意长度的字符:焦点离开后应有相应的提示,提交后页面无跳转并仍有相应的提示. b

记录一次zookeeper集群其中一节点在hbase web页面中显示Connection rese

集群环境:nn1,view和dn1三节点部署的zookeeper集群,gezookeeper进程均已启动hbase web页面显示zk_dump信息如下日志输出信息如下: shell> tail -f /var/log/zookeeper/zookeeper.log 2018-04-16 09:56:20,000 [myid:3] - INFO [ProcessThread(sid:3 cport:-1)::[email protected]] - Processed session termi