在用js写两个下拉列表交换值的时候,让我们着实郁闷的就是,当我们在选中多个值进行交换时,会有部分值残留在另一侧的下拉列表里,当我们一个一个交换时就没有事情。为什么会出现这样的问题呢 是因为当我们在remove掉一个字节点的时候,其中的每个节点的index都发生了变化就是说每一个都变成了原先的index-1(除非你交换的不是第一个第一个还是原先的0),那要实现全部交换的效果我们应该怎么办呢?
图解代码如下:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>jiaohuan.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
<style>
#div1{
border-style:ridge ridge;
width: 60px;
height: auto;
}
#div3{
border-style:ridge ridge;
width: 70px;
height: auto;
}
</style>
</head>
<body>
<div id="div4" align="center">
<div id="div1" style="float: left">
<select size="10" id="sel" multiple="multiple">
<option>
选项1
</option>
<option>
选项2
</option>
<option>
选项3
</option>
<option>
选项4
</option>
<option>
选项5
</option>
<option>
选项6
</option>
<option>
选项7
</option>
</select>
</div>
<div id="div2" style="float:left">
<input type="button" value="-->" onclick="xi()" />
<input type="button" value="《==" onclick="hui()" />
</div>
<div id="div3">
<select size="10" id="sel2" style="width: 70px" multiple="multiple">
</select>
</div>
</div>
</body>
</html>
<script type="text/javascript">
//这里我把单个移动和多值交换写在一个方法里了,可以拆开写
function xi(){
var sel=document.getElementById("sel");
for(var i=0;i<sel.options.length;i++){
if(sel.options[i].selected){
var chang=sel.options[i].innerHTML;
var sel2=document.getElementById("sel2");
var op=document.createElement("option");
op.appendChild(document.createTextNode(chang));
sel2.appendChild(op);
sel.removeChild(sel.options[i]);
i=i-1;//因为当我们在进行remove是index变换了,所以让他从0在开始遍历
}
}
}function hui(){
var sel=document.getElementById("sel2");
for(var i=0;i<sel.options.length;i++){
if(sel.options[i].selected){
var chang=sel.options[i].innerHTML;
var sel1=document.getElementById("sel");
var op=document.createElement("option");
sel.removeChild(sel.options[i]);
op.appendChild(document.createTextNode(chang));
sel1.appendChild(op);
i=i-1;//因为当我们在进行remove是index变换了,所以让他从0在开始遍历
}
}
}
</script>
简化算法 直接交换对象
function xi1(){
var sel=document.getElementById("sel");
for(var i=0;i<sel.options.length;i++){
if(sel.options[i].selected){
sel2.appendChild(sel.options[i]);
i--;
}
}
}
function hui1(){
var sel1=document.getElementById("sel");
var sel=document.getElementById("sel2");
for(var i=0;i<sel.options.length;i++){
if(sel.options[i].selected){
sel1.appendChild(sel.options[i]);
i=i-1;
}
}
}

- 大小: 14.2 KB

- 大小: 14.4 KB
分享到:
相关推荐
在FineReport报表工具中,用户经常需要通过按钮来处理页面上的值,如进行数据填报或值的计算。...在编程实现时,关键在于理解FineReport数据刷新机制的细节,并合理运用JavaScript API来辅助实现数据的即时读取。
在编程实现时,可以使用各种语言,例如 Python、Java、C++ 或 JavaScript。以下是使用 Python 的简单示例: ```python def swap_min_max(arr): min_val = float('inf') max_val = float('-inf') min_idx, max_...
它提供了安全的数据传输机制,确保在不同的组织或部门之间共享数据时,数据的完整性和隐私得到保护。源码中可能会有相关的API接口定义、数据加密和解密算法,以及权限控制的实现,这些都是保证数据交换安全的重要...
11. **数据库复制**:如MySQL的binlog复制,用于实现数据的实时同步,确保多节点数据的一致性。 12. **边缘计算**:在靠近数据产生的地方进行数据交换和处理,减少延迟,提升用户体验,特别适用于物联网场景。 13....
在本文中,我们将深入探讨如何...通过以上步骤,我们可以成功地在WPF应用中集成ECharts,实现数据的双向交换,创建出动态、实时的可视化界面。这在数据分析、监控系统等领域非常有用,能帮助用户更好地理解和操作数据。
3. **JavaScript交互**:在JavaScript中,可以通过`document.getElementById('myOcx')`获取到ActiveX对象,然后调用其方法或访问属性实现数据交换。例如,如果ActiveX控件有一个名为`getData`的方法,你可以这样调用...
本微众银行开源轻量级数据交换平台Exchangis基于Java开发,...系统用于数据在不同存储介质中快速传递,解决数据交换过程中的复杂性和兼容性问题。设计上采用微服务架构,服务之间松耦合,便于个性化开发和迭代拓展。
项目开发中需要用到一个拖动交换表格的功能,上网搜到雅虎的一...就自己综合网上资源写了一个可兼容IE,firefox,Chrome,Safari和Opera等主流浏览器的纯JS动态拖动表格实现行列内容交换。主要代码就不到400行JS而已。
js 实现 交换表的行! 值得下载看看!资源免费,大家分享!!
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以其简洁性和易读性而受到广泛欢迎。JSON最初由Douglas Crockford在1999年提出,并在随后的几年里迅速获得了开发者的青睐。它的设计目的是为了...
我们交换数组可以实现元素上下移动了,这个效果我们在表格或以前排序算法中都会用到,下面来看一个JavaScript下实现交换数组元素上下移动例子 在写项目的时候,要实现一个数组记录上下移动的示例。写起来也没有没...
QT Json数据交换是Qt框架中用于处理JSON(JavaScript Object Notation)数据的一种工具,它使得在C++应用程序中解析、序列化JSON数据变得方便高效。JSON是一种轻量级的数据交换格式,广泛应用于Web服务和跨平台通信...
js数组数据和对象数据做比较,并改变数组的值
4. **JSON(JavaScript Object Notation)**:JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。相比XML,JSON更简洁,更适合在网络上传输。在安卓应用中,Android SDK提供了Gson库和...
综合以上分析,这个项目可能是一个C++实现的内存数据交换库,它利用JSON进行数据序列化,通过连接池优化网络通信,使用Memcached作为缓存,同时具备CRC校验确保数据完整性,还有相应的多线程安全机制。这样的库对于...
在JavaScript(JS)中实现页面内元素的拖动并交换内容功能是一项常见的交互设计,它增强了用户对网页的控制感和交互体验。本教程将详细讲解如何通过JS来实现这样的功能,尤其参考了淘宝网卖家中心中的可拖动框架。 ...
标题中的“JavaScript html js页面刷新之后下拉菜单选中值不变”是一个常见的前端开发问题,涉及到浏览器缓存、页面状态保持以及JavaScript操作DOM元素的知识点。在这个场景中,开发者希望在用户选择下拉菜单的一项...
利用Objective-C+javaScrip解决开发中H5与原生混合过程中,js和原生交互繁琐,逻辑复杂,频繁交换数据的问题,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 利用...
该项目是采用Java语言开发的多语言支持型弹性流数据交换系统...ElasticFlow支持在多种数据端之间建立可计算的弹性流管道,实现数据的定时定量多渠道交换,适用于数据交换、搜索引擎、数据发布和数据仓库等多种场景。
在Android开发中,JSON(JavaScript Object Notation)是一种常见的数据交换格式,因其轻量级、易读、易写的特点,广泛应用于服务器与客户端之间的数据传输。本教程将深入讲解如何在Android平台上使用JSON进行网络...