JavaScript实现隐藏select标签的option

网上找了找,大概实现思路是用div或者span等其它所有标签能有display属性可以设置,用来隐藏就可。因为option标签没有这个属性可以设置。

 用到的控件,是两个下拉框

第一个控制下拉框,实现onchange方法,就是下拉框值改变事件

 

 

  < select  onchange ="ctrDisplay(this);" >
       
< option  value ="I" > I </ option >
       
< option  value ="E" > E </ option >
 
</ select >

 

第二个显示下拉框,受上面下拉框控制的。

ExpandedBlockStart.gif 代码
< select  id ="idselect" >
       
< option  value ="I_option1" > option1 </ option >                                               
       
< option  value ="E_option2" > option2 </ option >
       
< option  value ="I_option3>option3</option>
       <option value="
E_option4 > option4 </ option >
       
< option  value ="I_option5>option5</option>
       <option value="
E_option6 > option6 </ option >
       
< option  value ="I_option7" > option7 </ option >
       
< option  value ="E_option8" > option8 </ option >
       
< option  value ="I_option9" > option9 </ option >
       
< option  value ="E_option10" > option10 </ option >
 
</ select >

 

 

调用的JavaScript代码

 

ExpandedBlockStart.gif 代码
function  ctrDisplay(obj)
       {
                
// 获取目标下拉框对象
                 var  dirSelect  =  document.getElementById( " idselect " );
                
// 目标下拉框有多少个子标签
                 var  num  =  dirSelect.children.length;
                
// 循环遍历子标签
                 for (i = 0 ;i < num;i ++ )
                {
                    
// 顶一个容器,存放将要用的值
                     var  dirChildren;
                    
// 如果是DIV标签
                     if (dirSelect.children(i).tagName == ' DIV ' )
                    {
                        
// 获取DIV标签的ID值,并且分割值,并存起来
                        dirChildren  =  dirSelect.children(i).id.split( " _ " );
                    }
                    
else
                    {
                        
// 不是DIV标签,则是一个Option标签,获取它的Value值,并且分割存储
                        dirChildren  =  dirSelect.children(i).value.split( " _ " );
                    }
                    
                    
// 读取存取第一个值,是用来判断,控制下拉框到底选择哪个值,如果相等,下面做隐藏该子标签
                     if (dirChildren[ 0 ==  obj.value)
                    {           
                        
// 获取子标签
                         var  oldObj  =   dirSelect.children(i);
                        
// 获取子标签的Text
                         var  oldText  =  oldObj.innerText;
                        
// 获取子标签的Value
                         var  oldValue  =  oldObj.value;
                        
// 创建一个div新的标签
                         var  newObj  =  document.createElement( ' <div style="display:none;"></div> ' );
                        
// 把value值存入新标签的id中
                        newObj.setAttribute( " id " ,oldValue);
                        
// 把text值存入新标签的标签内
                        newObj.innerText  =  oldText;
                        
// 用新标签替换旧的标签
                        newObj.swapNode(oldObj);
                    }
                    
else
                    {
                        
// 以下是控制下拉框未选中的部分,获取这个字标签
                         var  oldObj  =  dirSelect.children(i);
                        
// 如果是一个div标签,证明它是给隐藏的,得恢复它显示出来
                         if (oldObj.tagName == ' DIV ' )
                        {
                            
// 获取它text文本
                             var  oldText  =  oldObj.innerText;
                            
// 获取它Value值
                             var  oldValue  =  oldObj.id;
                            
// 新建Option标签
                             var  newObj  =  document.createElement( ' <option></option> ' );
                            
// value值,存入新的option标签
                            newObj.value = oldv;
                            
// text值,存入新的option标签的innerText
                            newObj.innerText  =  oldText;
                            
// 用新的option标签代替之前隐藏的div标签,就能显示出来了
                            newObj.swapNode(oldObj);
                        }

                    }

                }
         }

 

 

转载于:https://www.cnblogs.com/zerostart/archive/2010/07/29/1788256.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值