http://blog.csdn.net/xiaojianpitt/archive/2008/12/04/3444357.aspx
在FireFox中,很多的js操作与IE中是不同的。现在本文就不同操作给予说明。
JS 操作select 标签
1, 添加 option。
<select>
<option value="aaa">123</option>
<option value="bbb">456</option>
</select>
<button onclick="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 onchange=”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 onclick="simOptionClick4IE()" >
<!-- 下面的 onclick="showOptionValue( this )" 是为 ff 和 opera而准备 -->
<option value="1" onclick="showOptionValue( this )" >aaaaa</option>
<option value="2" onclick="showOptionValue( this )" >bbbbb</option>
<option value="3" onclick="showOptionValue( this )" >ccccc</option>
</select> <div id="reslut" ></div>