JS实现列表移动(通过DOM操作select标签)

学习内容:

需求

用 JavaScript 实现 select 标签的移动

实现代码

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>选择列表</title>

	<script type="text/javascript">
		function moveSelected(src, dest) {
			// 获取想要移动元素的 select 标签的所有 option 子标签
			var srcOpt = document.getElementById(src).options;
			// 获取移动目的地元素的 select 标签
			var destOpt = document.getElementById(dest);
			for(var i = srcOpt.length - 1; i >= 0; i--) {
				if(srcOpt[i].selected === true) {
					// 把移动标签作为子节点添加到目标节点
					destOpt.appendChild(srcOpt[i]);
				}
			}
		}
		function moveAll(src, dest) {
			// 获取想要移动元素的 select 标签的所有 option 子标签
			var srcOpt = document.getElementById(src).options;
			// 获取移动目的地元素的 select 标签
			var destOpt = document.getElementById(dest);
			// 遍历每一个 option 子标签
			// 需要倒叙遍历,不然只会移动一部分标签,因为标签元素会向上移动
			for(var i = srcOpt.length - 1; i >= 0; i--) {
				// 把移动标签作为子节点添加到目标节点
				destOpt.appendChild(srcOpt[i]);
			}
		}
	</script>
</head>
<body>
	<table border="1">
		<tr>
			<td>
				<select id="select1" style="width:100px;height:200px" size="10" multiple="multiple">
					<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>
					<option value="选项9">选项9</option>
				</select>
			</td>
			<td align="center">
				<input type="button" onclick="moveSelected('select1','select2')" value="-->"/><br/>
				<input type="button" onclick="moveAll('select1','select2')" value="==>"/><br/>
				<input type="button" onclick="moveSelected('select2','select1')" value="<--"/><br/>
				<input type="button" onclick="moveAll('select2','select1')" value="<=="/>
			</td>
			<td>
				<select id="select2" style="width:100px;height:200px" size="10" multiple="multiple"></select>
			</td>
		</tr>
	</table>
</body>
</html>

总结:

仅供参考,欢迎讨论交流。

posted @ 2021-04-24 21:20  Yan_Yang  阅读(166)  评论(0编辑  收藏  举报