<style>
select{
width: 100px;
height: 200px;
}
</style>
<body>
<select name="" id="all" multiple>
<option value="">苹果</option>
<option value="">橘子</option>
<option value="">橙子</option>
<option value="">香蕉</option>
<option value="">榴莲</option>
</select>
<input type="button" name="" id="btn1" value=">>">
<input type="button" name="" id="btn2" value="<<">
<input type="button" name="" id="btn3" value=">">
<input type="button" name="" id="btn4" value="<">
<select name="" id="select" multiple>
</select>
<script src="js/common.js"></script>
<script>
var btn1 = my$('btn1'),
btn2 = my$('btn2'),
btn3 = my$('btn3'),
btn4 = my$('btn4'),
all = my$('all'),
select = my$('select');
// 1.全部选择
btn1.onclick = function () {
// 获取all中所有的option
// 错误的,children中的项被移走后,索引会发生变化
// for(var i = 0; i< all.children.length;i++){
// var option = all.children[i];
// select.appendChild(option);
// }
// 顺序倒了
// for (var i = all.children.length -1; i >=0; i--) {
// var option = all.children[i];
// select.appendChild(option);
// }
// 先取出all.children的个数
var len = all.children.length;
for(var i = 0; i < len; i++){
var option = all.children[0];
select.appendChild(option);
// 去掉当前option的selected效果
option.selected = false;
}
// 如果使用innerHTML这种方法移动子元素,子元素如果有事件,事件会丢失
select.innerHTML = all.innerHTML;
// 如果使用innerHTML去清空子元素,子元素如果有事件,会发生内存泄露(事件未被清楚)
all.innerHTML = '';
}
btn2.onclick = function () {
var len = select.children.length;
for (var i = 0; i < len; i++) {
var option = select.children[0];
all.appendChild(option);
// 去掉当前option的selected效果
option.selected = false;
}
}
//2.移动选中的按钮
btn3.onclick = function () {
// 找到所有选中的option
// 存储选中的option
var array = [];
for( var i = 0; i<all.children.length;i++){
var option = all.children[i];
if(option.selected === true){
array.push(option);
// 去掉当前option的selected效果
option.selected = false;
}
}
// 把数组中的option移动到select中
for( var i=0;i<array.length;i++){
option = array[i];
select.appendChild(option);
}
}
btn4.onclick = function () {
// 找到所有选中的option
// 存储选中的option
var array = [];
for (var i = 0; i < select.children.length; i++) {
var option = select.children[i];
if (option.selected === true) {
array.push(option);
// 去掉当前option的selected效果
option.selected = false;
}
}
// 把数组中的option移动到select中
for (var i = 0; i < array.length; i++) {
option = array[i];
all.appendChild(option);
}
}
</script>
</body>