读取并修改元素的内容:选中项左右移动

html:

<span style="font-size:18px;"><!DOCTYPE HTML>
<html>
<head>
<title>读取并修改元素的内容</title>
<meta charset="utf-8" />
<style>
	select{width:100px;height:85px;}
	div{display:inline-block;width:50px}
</style>

</head>
<body>
	<!--假设两个selectx元素,分别保存备选地区列表和选中地区列表
实现两选择框之间选项的交换:
    包括:当个选中项左右移动
              多个选中项左右移动
              全左移和全右移
要求:两个select中的地区都要按照名称首字母排序
-->
	<select id="unsel" size="5" multiple>
		<option>Argentina</option>
		<option>Brazil</option>
		<option>Canada</option>
		<option>Chile</option>
		<option>China</option>
		<option>Cuba</option>
		<option>Denmark</option>
		<option>Egypt</option>
		<option>France</option>
		<option>Greece</option>
		<option>Spain</option></select>
	<div>
<span style="white-space:pre">		</span><button οnclick="move(this)"><span style="color:#ff0000;">>></span></button>
<span style="white-space:pre">		</span><button οnclick="move(this)"><span style="color:#cc0000;">></span></button>
<span style="white-space:pre">		</span><button οnclick="move(this)"><span style="color:#ff0000;"><</span></button>
<span style="white-space:pre">		</span><button οnclick="move(this)"><span style="color:#ff0000;"><<</span></button>
	</div>
	<select id="sel" size="5" multiple>
	</select>
	<span style="color:#ff0000;"><script src="js/2_2.js"></script></span>
</body>
</html>
</span>

js:

<span style="font-size:18px;">var cts_unsel=[];//保存所有未选中的国家
var cts_sel=[];//保存所有已选中的国家
window.οnlοad=function(){
  //获得id为unsel的select元素的内容,保存在变量innerHTML中
  var innerHTML=unsel.innerHTML;
  //将innerHTML去掉首尾的空字符,再截取8~-9之间的子字符串,再按/<\/option>\s*<option>/切割,将结果保存在cts_unsel中
  cts_unsel=innerHTML.trim()
                     .slice(8,-9)
                     .split(/<\/option>\s*<option>/);
  console.log(String(cts_unsel));
}
function move(btn){
  switch(btn.innerHTML){
    case '>>'://将unsel中所有元素,拼接到sel中
      //在cts_sel的结尾拼接cts_unsel,将结果再保存回cts_sel中
      cts_sel=cts_sel.concat(cts_unsel);
      cts_unsel=[];//将cts_unsel替换为空数组
      break;
    case '<<'://将sel中所有元素,拼接到unsel中
      //在cts_unsel的结尾拼接cts_sel,将结果再保存回cts_unsel中
      cts_unsel=cts_unsel.concat(cts_sel);
      cts_sel=[];//将cts_sel替换为空数组
      break;
    case '>'://将unsel中选中的元素,拼接到sel中
      //从length-1开始,反向遍历unsel中每个option
      for(var i=unsel.options.length-1;i>=0;i--){
        //如果当前option的selected(为true)
        if(unsel.options[i].selected){
          //删除cts_unsel中i位置的1个元素,再拼接到cts_sel中,将结果保存回cts_sel
          cts_sel=cts_sel.concat(cts_unsel.splice(i,1));
        }
      }
      break;
    case '<'://将sel中选中的元素,拼接到unsel中
      //从length-1开始,反向遍历sel中每个option
      for(var i=sel.options.length-1;i>=0;i--){
        //如果当前option的selected(为true)
        if(sel.options[i].selected){
          //删除cts_sel中i位置的1个元素,再拼接到cts_unsel中,将结果保存回cts_sel
          cts_unsel=cts_unsel.concat(cts_sel.splice(i,1));
        }
      }
      break;
  }
  //分别对cts_unsel和cts_sel执行默认排序
  cts_unsel.sort(); cts_sel.sort();
  show();
}
function show(){//在每次修改数组后,将数组更新到页面
  if(cts_unsel.length==0){//如果cts_unsel的length为0
    unsel.innerHTML="";//清空unsel的内容
  }else{//否则,将cts_unsel中的元素,拼接为option元素,将结果保存到unsel元素的内容中
    unsel.innerHTML="<option>"+
      cts_unsel.join("</option><option>")+"</option>";
  }
  if(cts_sel.length==0){//如果cts_sel的length为0
    sel.innerHTML="";//清空sel的内容
  }else{//否则,将cts_sel中的元素,拼接为option元素,将结果保存到unsel元素的内容中
    sel.innerHTML="<option>"+
      cts_sel.join("</option><option>")+"</option>";
  }
}</span>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值