使用JavaScript操作Select元素

JavaScript操作Select元素说来也不是什么高深技术,不过在网页中还是很有用的。

创新互联建站专注为客户提供全方位的互联网综合服务,包含不限于成都网站制作、成都做网站、外贸营销网站建设、武平网络推广、微信小程序、武平网络营销、武平企业策划、武平品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联建站为所有大学生创业者提供武平建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com

今天试着用面向对象的思想用javascript写了一个SelectUtil“类”,完成网页中的select元素的各种操作,包括:添加、删除选中、全部删除、移动、调整顺序、全选。

代码本身没有什么好说的,估计很多人都会。只是写代码、调试代码的时候,发现两个有趣的现象:

1.FireFox可以直接把一个select元素的option对象插入另一个select元素,实际的效果是移动;而IE中同样的操作会出错;

2.同样的脚本,写在表单里与不写在表单里竟然有很大的差别,这个我以前没有注意到。

JavaScript操作Select元素,网页运行的效果:

JavaScript操作Select元素的代码如下:

 
 
 
 
  1. < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. < html xmlns="http://www.w3.org/1999/xhtml">
  3. < head>
  4. < meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. < title>listbox控制测试< /title>
  6. < script type="text/javascript">
  7.  function SelectUtil(idOrObj){
  8.   if(typeof(idOrObj)=="string"){
  9.    this.selectObj=document.getElementById(idOrObj);
  10.   }
  11.   else if (idOrObj!=null && typeof(idOrObj)=="object" && idOrObj.tagName=="SELECT"){
  12.    this.selectObj=idOrObj;
  13.   }
  14.   else{
  15.    alert("创建对象失败,参数不合法!");
  16.   }
  17.  }
  18.  SelectUtil.prototype.isExist=function(itemValue){
  19.   var isExist = false;
  20.   for(var i=0; i< this.selectObj.options.length; i++){
  21.    if(this.selectObj.options[i].value==itemValue){
  22.     isExist=true;
  23.     break;
  24.    }
  25.   }
  26.   return isExist;
  27.  }
  28.  SelectUtil.prototype.addItem=function(itemText,itemValue){
  29.   if(!itemText || !itemValue || typeof(itemText)!="string" ||typeof(itemValue)!="string" )return false;
  30.   if(this.isExist(itemValue)){
  31.    //alert("项目已存在!");
  32.    return false;
  33.   }
  34.   var optionItem = new Option(itemText,itemValue);
  35.   this.selectObj.options.add(optionItem);
  36.   return true;
  37.  }
  38.  SelectUtil.prototype.delItem=function(itemValue){
  39.   var bDel=false;
  40.   for(var i=0; i< this.selectObj.options.length; i++){
  41.    if(this.selectObj.options[i].value==itemValue){
  42.     bDel=true;
  43.     this.selectObj.options.remove(i);
  44.     break;
  45.    }
  46.   }
  47.   return bDel;
  48.  }
  49.  SelectUtil.prototype.delSelectedItem=function(){
  50.   var length = this.selectObj.options.length-1;
  51.   var num = 0;
  52.   for(var i=length; i>=0; i--){
  53.    if(this.selectObj.options[i].selected==true){
  54.     this.selectObj.options[i] = null;
  55.     num++;
  56.    }
  57.   }
  58.   return num;
  59.  }
  60.  SelectUtil.prototype.cloneItem = function (itemValue){
  61.   var result=null;
  62.   for(var i=0; i< this.selectObj.options.length; i++){
  63.    if(this.selectObj.options[i].value==itemValue){
  64.     result=this.selectObj.options[i];
  65.     break;
  66.    }
  67.   }
  68.   if(result==null)return null;
  69.   return new Option(result.text,result.value);
  70.  }
  71.  SelectUtil.prototype.getItem = function (itemValue){
  72.   var result=null;
  73.   for(var i=0; i< this.selectObj.options.length; i++){
  74.    if(this.selectObj.options[i].value==itemValue){
  75.     result=this.selectObj.options[i];
  76.     break;
  77.    }
  78.   }
  79.   return result;
  80.  }
  81.  SelectUtil.prototype.modItemText=function(itemText,itemValue){
  82.   var opt=this.getItem(itemValue);
  83.   if(opt==null){
  84.    alert("没有找到指定的项目!");
  85.    return false;
  86.   }
  87.   else{
  88.    opt.text = itemText;
  89.    return true;
  90.   }
  91.  }
  92.  SelectUtil.prototype.selItemByValue=function(itemValue){
  93.   var opt = this.getItem(itemValue);
  94.   if(opt!=null){
  95.    opt.selected=true;
  96.    return true;
  97.   }
  98.   else{
  99.    return false;
  100.   }
  101.  }
  102.  SelectUtil.prototype.clear=function(){
  103.   this.selectObj.options.length=0;
  104.  }
  105.  SelectUtil.prototype.selectedIndex=function(){
  106.   return this.selectObj.selectedIndex;
  107.  }
  108.  SelectUtil.prototype.seletedText=function(){
  109.   return this.selectObj.text;
  110.  }
  111.  SelectUtil.prototype.getSelectedItem=function(){
  112.   var idx = this.selectObj.selectedIndex;
  113.   if(idx==-1)return null;
  114.   else{
  115.    return this.selectObj.options[idx];
  116.   }
  117.  }
  118.  SelectUtil.prototype.adjustItem=function(optionObj,direction){
  119.   if(!optionObj){
  120.    optionObj = this.getSelectedItem();
  121.   }
  122.   if(!optionObj)return false;
  123.   var delta = (direction=="down")?1:-1;
  124.   if(optionObj.index+delta< 0 || optionObj.index+delta>=this.selectObj.options.length)return true;
  125.   else{
  126.    var opt,tmp;
  127.    opt = this.selectObj.options[optionObj.index+delta];
  128.    tmp = opt.value;
  129.    opt.value=optionObj.value;
  130.    optionObj.value = tmp;
  131.    tmp = opt.text;
  132.    opt.text=optionObj.text;
  133.    optionObj.text = tmp;
  134.    opt.selected=true;
  135.    optionObj.selected=false;
  136.    return true;
  137.   }
  138.  }
  139.  SelectUtil.prototype.getAllItem=function(){
  140.   return this.selectObj.options;
  141.  }
  142.  SelectUtil.prototype.getItemCount=function(){
  143.   return this.selectObj.options.length;
  144.  }
  145.  SelectUtil.prototype.moveSelectedItemTo=function(anotherSelectObj){
  146.   if(!anotherSelectObj)return false;
  147.   var length = this.selectObj.options.length-1;
  148.   var num = 0,opt;
  149.   for(var i=length; i>=0; i--){
  150.    if(this.selectObj.options[i].selected==true){
  151.     num++;
  152.     opt = this.selectObj.options[i];
  153.     //没有验证有无重复
  154.     anotherSelectObj.options.add(new Option(opt.text,opt.value));
  155.     this.selectObj.options[i] = null;
  156.    }
  157.   }
  158.   return num;
  159.  }
  160.  SelectUtil.prototype.moveAllItemTo=function(anotherSelectObj,bCreate){
  161.   if(!anotherSelectObj)return false;
  162.   var length = this.selectObj.options.length-1;
  163.   var num = 0,opt=null;
  164.   for(var i=length; i>=0; i--){
  165.    num++;
  166.    opt = this.selectObj.options[i];
  167.    //没有验证有无重复
  168.    anotherSelectObj.options.add(new Option(opt.text,opt.value));
  169.    this.selectObj.options[i] = null;
  170.   }
  171.   return num;
  172.  }
  173.  SelectUtil.prototype.getObject=function(){
  174.   return this.selectObj;
  175.  }
  176.  SelectUtil.prototype.selectAll=function(){
  177.   for(var i=0; i< this.selectObj.options.length; i++){
  178.    this.selectObj.options[i].selected=true;
  179.   }
  180.  }
  181. < /script>
  182. < style type="text/css">
  183.  #srclb,#dstlb{
  184.   border:1px solid #aaa;
  185.   width:200px;
  186.   height:400px;
  187.  }
  188.  .zhcxbtn{
  189.   width:30px;
  190.  }
  191. < /style>
  192. < /head>
  193. < body>
  194. < div>
  195. < table width="460" border="0" class="zhcx" cellpadding="0" cellspacing="0">
  196.  < tr>
  197.      < td>
  198.             < select multiple="multiple" name="srclb" id="srclb" ondblclick="srclb.moveSelectedItemTo(dstlb.getObject());">
  199.                 < option value="1">宝马1< /option>
  200.                 < option value="2">宝马2< /option>
  201.                 < option value="3">宝马3< /option>
  202.                 < option value="4">宝马4< /option>
  203.                 < option value="5">宝马5< /option>
  204.                 < option value="6">宝马6< /option>
  205.                 < option value="7">宝马7< /option>
  206.             < /select>
  207.         < /td>
  208.      < td>
  209.             < input type="button" class="zhcxbtn" value=">" onclick="srclb.moveSelectedItemTo(dstlb.getObject());"/>
  210.             < input type="button" class="zhcxbtn" value=">>" onclick="srclb.moveAllItemTo(dstlb.getObject());"/>
  211.             < input type="button" class="zhcxbtn" value="< " onclick="dstlb.moveSelectedItemTo(srclb.getObject());"/>
  212.             < input type="button" class="zhcxbtn" value="< < " onclick="dstlb.moveAllItemTo(srclb.getObject());"/>
  213.         < /td>
  214.      < td>
  215.             < select multiple="multiple" name="dstlb" id="dstlb" ondblclick="dstlb.adjustItem();">
  216.             < /select>
  217.         < /td>
  218.      < td>
  219.             < input type="button" class="zhcxbtn" value="↑" onclick="dstlb.adjustItem();"/>
  220.             < input type="button" class="zhcxbtn" value="↓" onclick="dstlb.adjustItem(null,'down');"/>
  221.         < /td>
  222.     < /tr>
  223. < /table>
  224. < /div>
  225. < input type="button" value="全选" onclick="dstlb.selectAll();"/>
  226. < script type="text/javascript">
  227.  var dstlb = new SelectUtil("dstlb");
  228.  var srclb = new SelectUtil("srclb");
  229. < /script>
  230. < /body>
  231. < /html>

网页名称:使用JavaScript操作Select元素
网页路径:http://www.36103.cn/qtweb/news31/5231.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联