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;
Web页面中两个listbox的option的转移的更多相关文章
- 关于在asp.net的web页面中的全局变量问题
在asp.net的web页面中是不是没有全局变量?有的,在Class类内部的都是,只不过在WebWofm程式中跟WinForm和Console程式有些区别,当页面刷新时,它们的值不会保持,依然会再次初 ...
- [置顶] 读取pdf并且在web页面中显示
读取pdf并且在web页面中显示 if (System.IO.File.Exists(f)) { Response.ContentType = "applicationpdf"; ...
- php中调用这个功能可以在web页面中显示hello world这个经典单词
php程序写的时间长了,自然对他所提供的功能了如指掌,他所提供的一大堆功能,真是觉得很好用,但有时候会发现php也缺少一些功能,自己总是会产生为php添加一些自定义的功能的想法.久而久之,终于今天憋不 ...
- web页面中可以包含多个对象
# encoding=utf-8 #python 2.7.10 #xiaodeng #web页面中可以包含多个对象 #HTTP权威指南 10页 #应用程序完成一项任务时通常会发布多个http事务.如: ...
- 企业级监控软件Zabbix搭建部署之zabbix在WEB页面中的配置
企业级监控软件zabbix搭建部署之zabbix在WEB页面中的配置 企业级监控软件zabbix搭建部署之zabbix在WEB页面中的配置 关于安装请看 http://www.linuxidc.com ...
- web页面中快速找到html对应元素两种方法
一.第一种方法(通过先进入开发模式然后再去选择网页元素) 1.打开IE.Chrome.FireFox等,按 F12 键进入开发模式 2.在打开的控制窗口左上角有个 箭头 按钮,点击它之后,此时将鼠标 ...
- FineBI如何在web页面中嵌入式集成
1. API嵌入集成 1.1 描述 FineBI是基于B/S架构的浏览器/服务器模式,现在用户开发的系统基本上趋向于B/S架构的浏览器/服务器模式,因此有些页面完全可以直接采用web页面嵌入式集成的简 ...
- WEB页面中常见的四种控件的必须的测试
以下为常规的需求,除非需求有明确说明,如密码输入框中可以输入空格. 输入框 1. 为空,但页面中明确说明不能为空(带有星号或者只有这一个输入框),有以下两种情况: a. 不进行输入或者使其为空:焦 ...
- 解决同一页面中两个iframe互相调用jquery,js函数
这一个月又没更新博客,唉,懒癌又犯了,今天解决了一个问题,关于两个iframe互相调用jquery函数方法 a.html中有两个iframe,如下: <iframe width="10 ...
随机推荐
- Axis2 WebService(配置、发布、调用)
准备工作 1.下载:axis2-1.5.4-bin.zip,axis2-1.5.4-war.zip 下载地址:http://axis.apache.org/axis2/java/core/ 2.环境变 ...
- concurrent.futures 使用及解析
from concurrent.futures import ThreadPoolExecutor, as_completed, wait, FIRST_COMPLETED from concurre ...
- html 制作静态页面新知识
1.在区块线边框添加一条水平线 例如:<div style:"height :300px;width:800px;border-bottom: solid 1px orange ;& ...
- Jmeter-8-FTP测试
1. 此处要深刻理解FTP的用法. 2. Get的时候填写的Remote File 路径/, 此处是相对路径. 实际为/home/user/ 3. Local file 此处要写到具体的文件. 4. ...
- [uva11806]容斥定理
n*m的矩形 k个人 第一行,最后一行,第一列,最后一列都至少站有一个人 小水题 正着做不好做,要反着想,那就容斥定理,ABCD四种情况分别是那四个行列分别没有人. #include<cstdi ...
- bzoj3671 [Noi2014]随机数生成器
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3671 [题解] 贪心从1...n*m取,开两个5000*5000的数组就够了,可以重复利用, ...
- bzoj 2079: [Poi2010]Guilds——结论题
Description Zy皇帝面临一个严峻的问题,两个互相抵触的贸易团体,YYD工会和FSR工会,他们在同一时间请求在王国各个城市开办自己的办事处.这里有n个城市,其中有一些以双向马路相连,这两个工 ...
- 【NOIP】提高组2013 积木大赛
[算法]找规律(听说还有写RMQ的www) [题解]ans+=(a[i]-a[i-1]) (i=1...n)(a[i]>a[i-1]) 后面比前面大k,说明要新叠加k个区间来达到所需高度.(看 ...
- bzoj 3028 母函数
首先我们可以求出来所有食物的母函数: 汉堡:f(x)=1/(1-x^2). 可乐:f(x)=1+x. 鸡腿:f(x)=1+x+x^2. 蜜桃多:f(x)=x/(1-x^2). 鸡块:f(x)=1/(1 ...
- web_一些常用的线上脚本地址记录(个人使用)
1.jquery <script src="http://code.jquery.com/jquery-1.4.1.min.js"></script> 2. ...