JS——选择水果
注意点:
1、select标签size属性显示选项数组,multiple属性可以多选
2、原select节点下的子节点在移动到其他selec标签下的时候,其原来的select标签下子节点长度在发生变化
3、注册事件可以直接绑定一个函数名,但是如果绑定的函数有参数,那么必须将这个有参数的函数写入到匿名函数中
4、Array.from可将一个类似数组或可迭代对象中创建一个新的数组实例
选择水果简单版本:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
select {
width: 100px;
height: 200px;
background-color: #D3FF82;
}
</style>
</head>
<body>
<select size="10">
<option>香蕉</option>
<option>苹果</option>
<option>葡萄</option>
<option>西瓜</option>
<option>芒果</option>
</select>
<button><<<<</button>
<button><</button>
<button>>>>></button>
<button>></button>
<select size="10"></select>
<script>
var btnArr = document.getElementsByTagName("button");
var selArr = document.getElementsByTagName("select");
//selArr数组的长度一直在变化
btnArr[0].onclick = function () {
for (var i = 0; i < selArr[0].children.length;) {
selArr[1].appendChild(selArr[0].children[i]);
}
}
btnArr[2].onclick = function () {
for (var i = 0; i < selArr[1].children.length;) {
selArr[0].appendChild(selArr[1].children[i]);
}
}
btnArr[1].onclick = function () {
for (var i = selArr[0].children.length-1; i >= 0; i--) {
if (selArr[0].children[i].selected == true) {
selArr[1].appendChild(selArr[0].children[i]);
}
}
}
btnArr[3].onclick = function () {
for (var i = selArr[1].children.length-1; i >= 0; i--) {
if (selArr[1].children[i].selected == true) {
selArr[0].appendChild(selArr[1].children[i]);
}
}
}
</script>
</body>
</html>
选择水果最终版本:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
select {
width: 100px;
height: 200px;
background-color: #D3FF82;
}
</style>
</head>
<body>
<select size="10" multiple="multiple">
<option value="0">香蕉</option>
<option value="1">苹果</option>
<option value="2">葡萄</option>
<option value="3">西瓜</option>
<option value="4">芒果</option>
</select>
<button><<<<</button>
<button><</button>
<button>>>>></button>
<button>></button>
<select size="10" multiple="multiple"></select>
<script>
var btnArr = document.getElementsByTagName("button");
var selArr = document.getElementsByTagName("select");
//selArr数组的长度一直在变化
//注册事件调用函数,在无参数的情况下可以直接绑定一个函数名,有参数的话,只能在匿名函数中调用
btnArr[0].onclick = function () {
allMove(selArr[0], selArr[1]);
}
btnArr[2].onclick = function () {
allMove(selArr[1], selArr[0]);
} function allMove(se1, se2) {
for (var i = 0; i < se1.children.length;) {
se1.children[i].selected = false;
se2.appendChild(se1.children[i]);
}
} btnArr[1].onclick = function () {
sigleSwitch(selArr[0], selArr[1]);
}
btnArr[3].onclick = function () {
sigleSwitch(selArr[1], selArr[0]);
} function sigleSwitch(se1, se2) {
for (var i = se1.children.length - 1; i >= 0; i--) {
if (se1.children[i].selected == true) {
se1.children[i].selected = false;
se2.appendChild(se1.children[i]);
}
}
//对se2排序,并将排序过后的值存储到arr数组中
var arr = Array.from(se2.children).sort(function (a, b) {
return a.value - b.value;
});
//删除se2中的子节点
for (var i = 0; i < se2.children.length;) {
se2.removeChild(se2.children[i]);
}
//将arr数组中的子节点添加到se2中
for (var i = 0; i < arr.length; i++) {
se2.appendChild(arr[i]);
}
}
</script>
</body>
</html>

JS——选择水果的更多相关文章
- vue.js选择if(条件渲染)详解
vue.js选择if(条件渲染)详解 一.总结 一句话总结: v-if <!DOCTYPE html> <html lang="en"> <head& ...
- js选择目录
找了好久,终于找到了! function browseFolder(path) {//打开本地目录(目录选择功能) try { var Message = "\u8bf7\u9009\u62 ...
- 【 D3.js 选择集与数据详解 — 5 】 处理模板的应用
在[选择集与数据 - 4]一文中,介绍了一个update.enter.exit的处理模板,这个模板很常用,本文将通过一个例子来讲解其使用方法. 1. 模板 复习一下上一章提到的模板. //绑定数据后, ...
- 【 D3.js 选择集与数据详解 — 4 】 enter和exit的处理方法以及处理模板
绑定数据之后,选择集分为三部分:update.enter.exit.这三部分的处理办法是什么呢?本文将讲解其处理方法,以及一个常用的处理模板. 1. enter的处理方法 如果没有足够的元素,那么处理 ...
- 【 D3.js 选择集与数据详解 — 3 】 绑定数据的顺序
data() 函数有两个参数,第一个是被绑定数据,第二个参数用于指定绑定的顺序.在数据需要更新的时候常常会用到. 默认的情况下,data()函数是按照索引号依次绑定数组各项的.第0个元素绑定数组的第0 ...
- 【 D3.js 选择集与数据详解 — 2 】 使用data()绑定数据
D3 中绑定数据大多是由 data() 函数来完成的,它是怎样工作的,它与 datum() 有什么区别呢? data()函数能够将数组各项分别绑定到各元素上,而且能够设置绑定的规则.data()还能够 ...
- 【 D3.js 选择集与数据详解 — 1 】 使用datum()绑定数据
选择集和数据的关系是 D3 最重要的基础,在[入门 - 第 7 章]时进行过些许讲解,对于要掌握好 D3 是远远不够的.故此开设一个新的分类,专门讨论选择集与数据的关系,包括数据绑定的使用和工作原理, ...
- (二)js选择结构
1.js的执行顺序. a) 一般按照书写的顺序来执行. b) 另外一种是通过判断然后执行下一项语句. 注:一般讲js语句写在body内容的最后来执行. 2.js的结构 a) 顺序结构 ...
- 【Node.js】2.开发Node.js选择哪个IDE 开发工具呢
安装完Node.js之后,就要为它选择一个有利的IDE用于开发. 相比较了多个IDE之后,定位在webstrom和sublime上. 有一个简单的比较: webstorm功能很丰富,前端开发工具的集大 ...
随机推荐
- [K3Cloud2.0]如何解决创建管理中心失败的问题
标题有点大,实际上,Cloud2.0产品质量还是顶呱呱的,至于在安装使用过程中出现的这个管理中心无法创建的问题,实际上是与我的网络环境有关,下面讲一下我的网络环境: 开发团队目前所在网段:10.30. ...
- zoj——1202 Divide and Count
Divide and Count Time Limit: 2 Seconds Memory Limit: 65536 KB Jack has several beautiful diamon ...
- HDU——1023 Train Problem II
Train Problem II Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- strace oracle
http://www.itpub.net/thread-1865593-1-1.html
- C++对象模型——继承体系下的对象构造(第五章)
5.2 继承体系下的对象构造 当定义一个object例如以下: T object; 时,实际上会发生什么事情呢?假设T有一个constructor(不论是由user提供或是由编译器合成),它会被调用. ...
- Git实战(三)环境搭建
上次的博文中.我们介绍了一下关于Git作为版本号控制工具的基本原理,接下来我们来搭建一个主要的Git环境(因为我使用的是Windows系统.所以重点側重在这方面). Git安装 Git的安装很easy ...
- POJ 2485 Highways && HDU1102(20/200)
题目链接:Highways 没看题,看了输入输出.就有种似曾相识的感觉,果然和HDU1102 题相似度99%,可是也遇到一坑 cin输入居然TLE,cin的缓存不至于这么狠吧,题目非常水.矩阵已经告诉 ...
- LeetCode 242. Valid Anagram (验证变位词)
Given two strings s and t, write a function to determine if t is an anagram of s. For example,s = &q ...
- 操作系统的时区设置会影响数据库查询SYSDATE和SYSTIMESTAMP的值
SYSDATE和SYSTIMESTAMP的值并不受数据库參数DBTIMEZONE的影响,操作系统时区的环境变量(如TZ)会影响它们的输入,由于SYSDATE和SYSTIMESTAMP实际是调用操作系统 ...
- 用R语言完成的交通可视化报告
http://sztocc.sztb.gov.cn/roadcongmore.aspx最终实现这几个图:1. 实时道路交通可视化2. 实时道路拥堵排名3. 历史路况时间序列图4. 每日每小时道况热力图 ...