读书人

选择器解决方法

发布时间: 2013-10-01 12:15:56 作者: rapoo

选择器
选择器解决方法

#container{
width:700px;
margin:0 auto;
overflow:hidden;
}
.unselected{
float:left;
width:300px;
}
.select-btn{
float:left;
width:100px;
height:100%;
text-align:center;
}
.selected{
float:left;
width:300px;
}
select{
width:300px;
}

<div id="container">
<div class="unselected">
<select size="8" multiple="multiple" id="unselected"></select>
</div>
<div class="select-btn">
<button type="button" id="selectall">>></button><br />
<button type="button" id="selectone">></button><br />
<button type="button" id="removeone"><</button><br />
<button type="button" id="removeall"><<</button>
</div>
<div class="selected">
<select size="8" multiple="multiple" id="selected"></select>
</div>
</div>

var data=[{label:"item1",value:1},{label:"item2",value:2},{label:"item3",value:3},{label:"item4",value:4},{label:"item5",value:5},{label:"item6",value:6},{label:"item7",value:7},{label:"item8",value:8},{label:"item9",value:9},{label:"item10",value:10},{label:"item11",value:11}];
//初始化
for(var i=0;i<data.length;i++){
var item=document.createElement("option");
item.text=data[i].label;
item.value=data[i].value;
item.initIndex=i;
unselected.appendChild(item);
}
//选择全部
selectall.addEventListener("click",function(){
var items=[];
for(var i=0;i<unselected.length;i++){
items.push(unselected[i]);
}
select(items);
},false);
//选择部分
selectone.addEventListener("click",function(){
var items=[];
for(var i=0;i<unselected.length;i++){
if(unselected[i].selected){
items.push(unselected[i]);
}
}
select(items);
},false);
//移除全部
removeall.addEventListener("click",function(){
var items=[];
for(var i=0;i<selected.length;i++){
items.push(selected[i]);
}
remove(items);
},false);
//移除部分
removeone.addEventListener("click",function(){
var items=[];
for(var i=0;i<selected.length;i++){
if(selected[i].selected){
items.push(selected[i]);
}
}
remove(items);
},false);
//选择
function select(items){
var i=0,j=0;
for(;i<items.length;i++){
while(selected[j]&&selected[j].initIndex<items[i].initIndex){
j++;
}
items[i].selected=false;
selected.add(items[i],selected[j]);
}
}
//移除
function remove(items){
var i=0,j=0;
for(;i<items.length;i++){
while(unselected[j]&&unselected[j].initIndex<items[i].initIndex){
j++;
}
items[i].selected=false;
unselected.add(items[i],unselected[j]);
}
}

读书人网 >JavaScript

热点推荐