`
lzj0470
  • 浏览: 1244452 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

    博客分类:
  • js
阅读更多

在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>

IE 6中使用document.createElement和appendChild无法显示

<script type=”text/javascript”>
var i = 0;
function change(){
i++;
  var  tb=document.getElementById(”t1″)
  var txt = document.createElement(”input”);
  var tr1 = document.createElement(”tr”);
var td1= document.createElement(”td”);
var td2= document.createElement(”td”);
td2.setAttribute(”width”,”123″)
td2.setAttribute(”bordercolor”,”#FFFFFF”)
td2.setAttribute(”bgcolor”,”#CAE2EB”)

  td1.setAttribute(”width”,”401″)
  td1.setAttribute(”align”,”left”)
td1.setAttribute(”bordercolor”,”#FFFFFF”)
td1.setAttribute(”bgcolor”,”#FFFFFF”)
td1.innerHTML=”phone”+i+”1″;
td2.innerHTML=”电话号码”+i+”1″;
  txt.setAttribute(”name”,”phone”+i+”1″);
  txt.setAttribute(”type”,”text”);
 txt.setAttribute(”size”,”15″);
 txt.setAttribute(”maxlength”,”15″);
 
 td2.appendChild(td2);
 tr1.appendChild(td2);
 tr1.appendChild(td1);

td1.appendChild(txt);
‘tb.appendChild(tr1);
tb.appendChild(tr1);
}
</script>

问题IE6对appendChild的函数不支持,

IE6 增加TR用 TABLEOBJ.insertRow() 
        增加TD用 TROBJ.insertCell()

参考IE6可正常执行的代码:

<script>
var j=0
function add_row(){
    k=j+1
    j=sqd.rows.length;
    newRow=document.all.sqd.insertRow(-1)
    newcell=newRow.insertCell()
    newcell.style.backgroundColor=’#f7f7f7′
    newcell.innerHTML=j
    newcell=newRow.insertCell()
    newcell.style.backgroundColor=’#f7f7f7′
    newcell.innerHTML=”<input name=Number type=radio >”
    newcell=newRow.insertCell()
    newcell.style.backgroundColor=’#f7f7f7′
    newcell.innerHTML=”<input name=SerialNumber type=text class=INPUT1 size=3>”
    newcell=newRow.insertCell()
    newcell.style.backgroundColor=’#f7f7f7′
    newcell.innerHTML=”<input name=ProductName type=text class=INPUT1 size=3>”
    newcell=newRow.insertCell()
    newcell.style.backgroundColor=’#f7f7f7′
    newcell.innerHTML=”<input name=PieceNo type=text class=INPUT1 size=3>”
    newcell=newRow.insertCell()
    newcell.style.backgroundColor=’#f7f7f7′
    newcell.innerHTML=”<input name=Quantity type=text class=INPUT1 size=3>”
    newcell=newRow.insertCell()
    newcell.style.backgroundColor=’#f7f7f7′
    newcell.innerHTML=”<input name=GrossWeight type=text class=INPUT1 size=3>”
    newcell=newRow.insertCell()
    newcell.style.backgroundColor=’#f7f7f7′
    newcell.innerHTML=”<input name=CountWeight type=text class=INPUT1 size=3>”
    newcell=newRow.insertCell()
    newcell.style.backgroundColor=’#f7f7f7′
    newcell.innerHTML=”<input name=UnitPrice type=text class=INPUT1 size=3>”
    newcell=newRow.insertCell()
    newcell.style.backgroundColor=’#f7f7f7′
    newcell.innerHTML=”<input name=Amount type=text class=INPUT1 size=3>”
    newcell=newRow.insertCell()
    newcell.style.backgroundColor=’#f7f7f7′
    newcell.innerHTML=”<input name=CustOrder type=text class=INPUT1 size=3>”
    newcell=newRow.insertCell()
    newcell.style.backgroundColor=’#f7f7f7′
    newcell.innerHTML=”<input name=Description type=text class=INPUT1 size=3>”
}
function del_row() {
    if(sqd.rows.length==1) return;
    var checkit = false
    for (var i=0;i<document.all.Number.length;i++) {
            if (document.all.Number[i].checked) {
            checkit=true;
            sqd.deleteRow(i)
            break;
            }
    }
    if (checkit) {
        for(i=1;i<sqd.rows.length;i++){
        sqd.rows[i].cells[0].innerText=i
    }

    } else
    {
    alert(”请选择一个要删除的对象”);
    return false}
}
</script><table width=90% border=0 align=”center” cellpadding=2 cellspacing=1 bgcolor=”#FFFFFF”>
  <tr>
    <td height=”25″ class=”table1″>
      <div align=”center”><font color=”#FFFFFF”><strong>≡≡≡ 货 运 单 概 要 ≡≡≡</strong></font></div></td>
  </tr>
  <tr>
    <td align=center valign=top bgcolor=f7f7f7><table id=”sqd” width=”90%” border=”0″ cellpadding=”0″ cellspacing=”1″ bgcolor=”#999999″>
        <tr bgcolor=”#BAC2DA”>
          <td height=”25″>
            <div align=”center”>序号</div></td>
          <td>
            <div align=”center”>选中
                <input name=Number type=hidden >
          </div></td>
          <td>
            <div align=”center”>货物编号</div></td>
          <td>
            <div align=”center”>货物品名</div></td>
          <td>
            <div align=”center”>件数</div></td>
          <td>
            <div align=”center”>数量</div></td>
          <td>
            <div align=”center”>毛重</div></td>
          <td>
            <div align=”center”>计货重量</div></td>
          <td>
            <div align=”center”>费率</div></td>
          <td>
            <div align=”center”>金额</div></td>
          <td>
            <div align=”center”>客户定单号</div></td>
          <td>
            <div align=”center”>备注</div></td>
        </tr>
      </table>
        <br>
        <input name=”Submit5″ type=”button” onClick=add_row() class=”button” value=” 添 加 “>
        <input name=”Submit33″ onclick=del_row() type=”button” class=”button” value=” 删 除 “>
    </td>
  </tr>
</table>

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiaojianpitt/archive/2008/12/04/3444357.aspx
分享到:
评论
1 楼 java_xiaoyi 2011-07-27  
格式不给力啊~~看着头大~

相关推荐

    使用js对select动态添加和删除OPTION示例代码

    动态删除select中的所有options、某一项option以及动态添加select中的项option,在IE和FireFox都能测试成功,感兴趣的朋友可以参考下,希望对大家有所帮助

    javascript option onclick事件ie解决方案 兼容ie,firefox

    select-option onclick aaaaa bbbbb ccccc [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行]运行测试下即可。

    js获取select标签的值且兼容IE与firefox

    jsp代码: 代码如下:&... ’jobSelect xss=removed&gt; &lt;option selected=”selected” value=”-1″&gt;–依职类筛选–&lt;/option&gt;   &lt;option value=”-1″&gt;–依职类筛选–&lt;/option&gt;  &lt;s:iterator value=”jobCat”

    IE不支持option的display样式,只能使用remove和add

    本以为通过display:none即可实现,结果发现在option元素上使用display:none在firefox中有效,在IE6、IE7、IE8中都无效。    所以,通过javascript设置display:none也是在IE中无效,代码如下: it works……...

    javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)

    本篇文章主要介绍了javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome) 需要的朋友可以过来参考下,希望对大家有所帮助

    javascript各浏览器中option元素的表现差异

    1,IE6/7/8/9中无事件(如click,mouseover),Firefox/Safari/Chrome/Opera则有。 代码如下: &lt;...示例:122,点击option,通过srcElement获取事件源目标在IE中是select,Firefox/Safari/Chrome/Opera则是optio

    js解决select下拉选不中问题

    //判断下移动到的对象,移动到option上ie下是null,firefox等为undefined。。 if (!o) return;//为option退出不隐藏 完整代码案例为: &lt;!DOCTYPE ...

    [IEFireFox兼容]JS对select操作

    今天在Ajax中使用两个下拉框动态添加select中的options,当我在IE测试下正常使用却在FireFox中不能正常使用,我对脚本也不是很熟悉,所以上网查了一下发现他们在动态添加option时有点不同。 下面把他记下来,说不定...

    select:React选择

    支持IE11 +,Chrome,Firefox,Safari 键盘 打开选择(焦点输入||焦点并单击) KeyDown / KeyUp / Enter进入菜单 安装 用法 基本用途 import Select , { Option } from 'rc-select' ; export default ( ) =&gt; ( &lt...

    HTML-select-option:为 HTML 表单上的 Select 选项收集更易于样式化的替代品,因为默认的替代品真的很烦人!

    目的是让一些非常好的、响应式/跨浏览器/其他流行语准备好选择表单元素放入需要一些样式的网络表单中(因此我们不必与默认值作斗争)。 在开始设置下拉列表(或其他表单元素)样式之前,先浏览一下。... 火狐(34) 默

    JS分页效果JS分页效果

    Supported in Internet Explorer, Mozilla Firefox */ function showPages(name) { //初始化属性 this.name = name; //对象名称 this.page = 1; //当前页数 this.pageCount = 1; //总页数 this.argName = 'page...

    jQuery插件实现可输入和自动匹配的下拉框

    实现可输入+带自动匹配功能的下拉框,我试过以下... &lt;option value=Firefox&gt; &lt;option value=Chrome&gt; &lt;option value=Opera&gt; &lt;option value=Safari&gt; 优点:节约js代码; 缺点:IE 9及以下的IE浏览器 和 Safari 均不支

    linkage-selector:html 的链接选择

    IE10+及各大主流浏览器(Chrome, FireFox, Safari, Opera)的最新的几个版本。 #使用方法 使用方法非常简单,您只需要3步: ##1.设置三个参数。 data-role : 将其设为 linkage-selector 即可 data-src : json数据文件...

    layui前端框架-其他

    select option 内容出现换行时的样式异常问题&lt;/p&gt;&lt;p&gt;[修复] colorpicker 颜色选择组件在 Firefox 下选择颜色时的若干兼容问题&lt;/p&gt;&lt;p&gt;[加强] colorpicker 组件的坐标定位计算方式&lt;/p&gt;&lt;p&gt;[修复] 低版本 ie 若干报错...

    html入门到放弃笔记

    2、Mozilla Firefox 3、Google Chrome 4、Apple Safari 5、Opera Opera(欧朋) 3、主要技术 1、HTML 2、CSS 3、Javascript 2、HTML入门(重点) 1、什么是HTML Hyper Text Markup Language 超级 文本 标记 ...

Global site tag (gtag.js) - Google Analytics