7.html原生js:穿梭框,左右框添加数据

news/2024/7/3 20:37:19

原理就是,有两个select框和两个点击按钮。向右→添加时,获取左边option的选中状态,所有选中的option加到右边去
效果图:
在这里插入图片描述

可复制代码,直接运行

<div style="border:1px solid #ccc;margin-top:10px;padding:10px;">  //格式调整
	<table width="98%" border="0" align="center" cellspacing='0'cellpadding='0' class=''>  
		<tr>  
			//这是左边的框:未授权数据
			<td style="width: 40%;border: 0px;text-align: center;padding-left: 0px;">  
				<div style="padding-left: 20px;text-align: left;">未授权数据</div>
				<div><select id="unGrant" name="unGrant" multiple size="20" style="width: 300px;margin-left: 0px;line-height: 25px;height: 384px;">
				<option value="选项1">选项1</option>
                <option value="选项2">选项2</option>
                <option value="选项3">选项3</option>
                <option value="选项4">选项4</option>
                <option value="选项5">选项5</option>
                <option value="选项6">选项6</option>
                <option value="选项7">选项7</option>
                <option value="选项8">选项8</option>
				</select></div>
			</td>
			
			//这是中间的两个按钮,有个事件,根据参数顺序不同,从左到右,从右到左
			<td style="border: 0px;text-align: center;">
				<div style="margin-bottom: 15px;">
					<a onclick="moveElementt('unGrant','granted')" class="btn btn-default" style="padding-left: 25px;padding-right: 25px;">添加 <i class="fa fa-arrow-right"></i></a>
				</div>
				<div>
					<a onclick="moveElementt('granted','unGrant')" class="btn btn-default" style="padding-left: 25px;padding-right: 25px;"><i class="fa fa-arrow-left">删除</i></a>
				</div>
			</td>

			 //这是右边的框:以授权数据
			<td style="border: 0px;width: 40%"> 
				<div>已授权数据</div>
				<div><select id="granted" name="granted" multiple style="width: 300px;height: 384px;line-height: 27px;"></select></div>
			</td>
		</tr>
	</table>
</div>
<scrpit>
function moveElementt(selfId,targetId){
    var self=document.getElementById(selfId);    //框1
    var selfOptions=self.childNodes;			 //框1的option,准备移向框2
    var target=document.getElementById(targetId);//框2
    var selfOption=null;
    for(var i=0;i<selfOptions.length;i++){
        selfOption=selfOptions[i];  		//框1的每个option
        if(selfOption.selected){			//option选中
            self.removeChild(self.childNodes[i--]);  	//框1的选中option删除,i--
            
            var option=document.createElement("option");  //创建一个option,设置框1的value和内容  添加到框2
            option.setAttribute("value",selfOption.value);
            option.appendChild(document.createTextNode(selfOption.text));
            target.appendChild(option);
        }
    }
}
</scrpit>

http://www.niftyadmin.cn/n/4557424.html

相关文章

mysql 插入百万条数据

利用mysql内存表插入速度快的特点&#xff0c;先存储过程在内存表中生成数据&#xff0c;然后再从内存表插入普通表中 一.创建内存表 CREATE TABLE vote_record_memory ( id INT (11) NOT NULL AUTO_INCREMENT, name VARCHAR (50) NOT NULL,pwd VARCHAR(32) NOT NULL,create_ti…

C++网络编程是什么....

用它来构造你想要构造的事件 用语言构成了一个世界或者描述了一个事件C同样是一种语言 就像你写作文

8.jsp前端页面的理解:分页、筛选

jsp页面刷新只是改了页码和筛选条件而已: 1.第一次访问还是点击下一页时&#xff0c;肯定是request.getParameter获取所有需要的参数&#xff0c;比如当前页码&#xff0c;重要的筛选条件。 //如果是第一次访问&#xff0c;那么很多参数默认为空&#xff0c;那就作一点处理就…

Nginx 安装--图片服务器搭建

1. nginx 需要依赖以下模块&#xff1a; gzip模块需要 zlib 库 rewrite模块需要 pcre 库 ssl 功能需要openssl库 1.1.安装pcre 1. 获取pcre编译安装包&#xff0c;在http://www.pcre.org/上可以获取当前最新的版本 2. 解压缩pcre-xx.tar.gz包。 3. 进…

C++语言的学习方法

||| 多看书多看源码多做练习 ||| 不需要 首先你要对他有兴趣你才可能会把他学好 ||| 不需要 怎么学都学不会 不感兴趣的人 学起来很快 很好的学习地方http://www.jtr.cn/不好你杀了我 ||| 对他有兴趣的人 建议先学下c语言啊 对你来说你比较好的. ||| 没有前提 有C语言的基础 然…

jieba(杰巴)分词的三种模式

jieba&#xff08;结巴&#xff09;是一个强大的分词库&#xff0c;完美支持中文分词&#xff0c;做为最好的Python中文分词组件。 安装&#xff1a;pip install jieba 特点 支持三种分词模式&#xff1a; 1.精确模式&#xff0c;试图将句子最精确地切开&#xff0c;适合文本分…

在C#里 级联连接 怎么写

然后将它的isposeback设置为true就可以了 是下拉列表改变事件 有个事件

poj2456---Aggressive cows

tips: 1.二分时区间是否要加等号&#xff0c;看等号成立时是否需要进入循环 2.L和R的赋值要看条件&#xff0c;第一个满足条件和最后一个满足条件 3.所有的都可以归结为找位置&#xff1f;&#xff1f; //感觉是二分答案 //想要寻找最后一个满足条件C的元素的位置&#xff0c; …