FireFox和IE下的select option JS相关操作

在FireFox中,很多的js操作与IE中是不同的。现在本文就不同操作给予说明。

JS 操作select 标签

1,     添加 option。

<select>
<option value="aaa">123</option>
<option value="bbb">456</option>
</select>
<button οnclick="myOption=document.getElementsByTagName('select')[0];myOption.options[myOption.options.length]=new Option('guoshuangText','guoshuangValue')">add option</button>





2,     删除 option 在 firefox 是 select.remove(selectedIndex),而不是 select.options.remove()

针对这一问题在编写代码中有一个解决办法:

try{

               select1.options.remove(j);

   // 首先执行这个操作,因为大部分用户都是使用ie

   }

     catch(e)

     {

           // 如果抛出异常的话,就尝试firefox的操作

           select1.remove(j);

       }


3,输出 option[x].innerText 在 firefox 下用 options[x].textContent(firefox没有innerText,就是用textContent 来替代的)

<select οnchange=”alert(this[selectedIndex].textContent)”>
<option value=”aaa”>123</option>
<option value=”bbb”>456</option>
</select>


4,在firefox 中判断select是否选中,不能用

for(var j=0 ; j < select1.options.length;j ++)  

           {

                         if(select1.options[j].selected){}

}


而是应该这样

for(var j=0 ; j < select1.options.length;j ++)   {

     var checka = select1.options[j].selected;

                         if(checka){}   }


这种情况在ie和firefox中是通用的,但是为什么这样呢,具体原因现在还不清楚。

5,对于select 的onclick事件,ie支持在select中设置onclick事件,在option中设置无效,但是在Firefox中,支持option的onclick事件,在select中设置无效。另外,如果在onclick中想要得到点击的是哪一个option,是得不到的。为什么呢?因为在点击事件是发生在选择之前的,只有点击之后才能确定哪一个被选中了。所以在这是设置了一个定时函数,在单击之后60ms执行来判断哪个选中。

下面给出了解决办法。

  

<script type="text/javascript" >    

      

     function simOptionClick4IE(){    

       var evt=window.event   ;    

       var selectObj=evt?evt.srcElement:null;    

       // IE Only    

       if (evt && selectObj ) ) {   // 事件存在  

                    

               // 记录原先的选中项    

               var oldIdx = selectObj.selectedIndex;    

      

               setTimeout(function(){    

                 var option=selectObj.options[selectObj.selectedIndex];    

                 // 此时可以通过判断 oldIdx 是否等于 selectObj.selectedIndex    

                   // 来判断用户是不是点击了同一个选项,进而做不同的处理.    

                   showOptionValue(option)    

      

               }, 60);    

       }    

   }    

   function showOptionValue(opt,msg){    

       var now=new Date();    

       var dt= (1900+now.getYear())+'-'+(now.getMonth()+1)+'-'+now.getDate()+    

               ' '+now.getHours()+':'+now.getHours()+':'+now.getSeconds()+'.'+now.getMilliseconds();    

       var resultZone=document.getElementById('reslut');    

       resultZone.style.margin="10px";    

       resultZone.innerHTML=dt +" 时,点击了: " + (opt.text + ' = '+opt.value);    

   }    

</script>  

   <select   οnclick="simOptionClick4IE()" >      

       <!-- 下面的 οnclick="showOptionValue( this )" 是为 ff 和 opera而准备 -->    

       <option value="1" οnclick="showOptionValue( this )" >aaaaa</option>    

       <option value="2" οnclick="showOptionValue( this )" >bbbbb</option>    

       <option value="3" οnclick="showOptionValue( this )" >ccccc</option>    

   </select>       <div id="reslut" ></div>




本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiaojianpitt/archive/2008/12/04/3444357.aspx

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值