`
Longmanfei
  • 浏览: 48366 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JS实现数据交换(解决交换多值时残留值的问题)

阅读更多

      在用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
1
2
分享到:
评论

相关推荐

    FineReport中如何用JavaScript解决控件值刷新不及时的问题

    在FineReport报表工具中,用户经常需要通过按钮来处理页面上的值,如进行数据填报或值的计算。...在编程实现时,关键在于理解FineReport数据刷新机制的细节,并合理运用JavaScript API来辅助实现数据的即时读取。

    PTA-交换最小值和最大值

    在编程实现时,可以使用各种语言,例如 Python、Java、C++ 或 JavaScript。以下是使用 Python 的简单示例: ```python def swap_min_max(arr): min_val = float('inf') max_val = float('-inf') min_idx, max_...

    大数据共享交换平台数据可视化演示DEMO源码.zip

    它提供了安全的数据传输机制,确保在不同的组织或部门之间共享数据时,数据的完整性和隐私得到保护。源码中可能会有相关的API接口定义、数据加密和解密算法,以及权限控制的实现,这些都是保证数据交换安全的重要...

    数据交换方案的集锦汇总

    11. **数据库复制**:如MySQL的binlog复制,用于实现数据的实时同步,确保多节点数据的一致性。 12. **边缘计算**:在靠近数据产生的地方进行数据交换和处理,减少延迟,提升用户体验,特别适用于物联网场景。 13....

    WPF调用Echart,通过JS与WPF数据交换

    在本文中,我们将深入探讨如何...通过以上步骤,我们可以成功地在WPF应用中集成ECharts,实现数据的双向交换,创建出动态、实时的可视化界面。这在数据分析、监控系统等领域非常有用,能帮助用户更好地理解和操作数据。

    activex跟js数据交换例子程序

    3. **JavaScript交互**:在JavaScript中,可以通过`document.getElementById('myOcx')`获取到ActiveX对象,然后调用其方法或访问属性实现数据交换。例如,如果ActiveX控件有一个名为`getData`的方法,你可以这样调用...

    基于Java的微众银行开源轻量级数据交换平台Exchangis设计源码

    本微众银行开源轻量级数据交换平台Exchangis基于Java开发,...系统用于数据在不同存储介质中快速传递,解决数据交换过程中的复杂性和兼容性问题。设计上采用微服务架构,服务之间松耦合,便于个性化开发和迭代拓展。

    兼容主流浏览器的纯JS动态拖动表格实现行列内容交换

    项目开发中需要用到一个拖动交换表格的功能,上网搜到雅虎的一...就自己综合网上资源写了一个可兼容IE,firefox,Chrome,Safari和Opera等主流浏览器的纯JS动态拖动表格实现行列内容交换。主要代码就不到400行JS而已。

    js 实现 交换表的行

    js 实现 交换表的行! 值得下载看看!资源免费,大家分享!!

    JSON 是一种轻量级的数据交换格式。该文档详细介绍了JSON

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它以其简洁性和易读性而受到广泛欢迎。JSON最初由Douglas Crockford在1999年提出,并在随后的几年里迅速获得了开发者的青睐。它的设计目的是为了...

    Javascript实现数组中的元素上下移动

    我们交换数组可以实现元素上下移动了,这个效果我们在表格或以前排序算法中都会用到,下面来看一个JavaScript下实现交换数组元素上下移动例子 在写项目的时候,要实现一个数组记录上下移动的示例。写起来也没有没...

    QT Json 数据交换

    QT Json数据交换是Qt框架中用于处理JSON(JavaScript Object Notation)数据的一种工具,它使得在C++应用程序中解析、序列化JSON数据变得方便高效。JSON是一种轻量级的数据交换格式,广泛应用于Web服务和跨平台通信...

    js数组数据和对象数据做比较,并改变数组的值

    js数组数据和对象数据做比较,并改变数组的值

    安卓和服务器数据交换

    4. **JSON(JavaScript Object Notation)**:JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。相比XML,JSON更简洁,更适合在网络上传输。在安卓应用中,Android SDK提供了Gson库和...

    MemClient.rar_C++内存交换_内存数据交换

    综合以上分析,这个项目可能是一个C++实现的内存数据交换库,它利用JSON进行数据序列化,通过连接池优化网络通信,使用Memcached作为缓存,同时具备CRC校验确保数据完整性,还有相应的多线程安全机制。这样的库对于...

    JS实现拖动页面内任意元素并交换内容

    在JavaScript(JS)中实现页面内元素的拖动并交换内容功能是一项常见的交互设计,它增强了用户对网页的控制感和交互体验。本教程将详细讲解如何通过JS来实现这样的功能,尤其参考了淘宝网卖家中心中的可拖动框架。 ...

    JavaScript html js页面刷新之后下拉菜单选中值不变,在按钮提交后保存下拉列表中值不变

    标题中的“JavaScript html js页面刷新之后下拉菜单选中值不变”是一个常见的前端开发问题,涉及到浏览器缓存、页面状态保持以及JavaScript操作DOM元素的知识点。在这个场景中,开发者希望在用户选择下拉菜单的一项...

    利用Objective-C+javaScrip解决开发中H5与原生混合过程中,js和原生交互繁琐,逻辑复杂,频繁交换数据的问题

    利用Objective-C+javaScrip解决开发中H5与原生混合过程中,js和原生交互繁琐,逻辑复杂,频繁交换数据的问题,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 利用...

    基于Java语言的多语言支持的ElasticFlow弹性流数据交换系统设计源码

    该项目是采用Java语言开发的多语言支持型弹性流数据交换系统...ElasticFlow支持在多种数据端之间建立可计算的弹性流管道,实现数据的定时定量多渠道交换,适用于数据交换、搜索引擎、数据发布和数据仓库等多种场景。

    android使用JSON进行网络数据交换(服务端、客户端)的实现

    在Android开发中,JSON(JavaScript Object Notation)是一种常见的数据交换格式,因其轻量级、易读、易写的特点,广泛应用于服务器与客户端之间的数据传输。本教程将深入讲解如何在Android平台上使用JSON进行网络...

Global site tag (gtag.js) - Google Analytics