`
lzj0470
  • 浏览: 1272725 次
  • 性别: 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  
格式不给力啊~~看着头大~

相关推荐

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

    JavaScript Option onclick 事件 IE 解决方案及兼容 IE 和 Firefox JavaScript 中的 Option onclick 事件是用户在Select 元素中选择一个选项时触发的事件,但是在 Internet Explorer(IE)浏览器中,该事件无法正确...

    javascript操作Select标记中options集合

    这篇博客“javascript操作Select标记中options集合”深入探讨了如何利用JavaScript动态地管理和操作这些选项。以下是关于这个主题的一些关键知识点: 1. **DOM操作**:在JavaScript中,我们可以使用DOM(Document ...

    js 操作select和option常用代码整理

    这篇文档主要总结了JavaScript操作`select`和`option`的一些常见代码片段。 1. **获取选中项的值和文本** 当用户选择了一个`&lt;option&gt;`后,可以通过`$(“#mySelect”).val()`获取选中项的`value`值,通过`$(“#...

    解决IE下select标签innerHTML插入option的BUG(兼容IE,FF,Opera,Chrome,Safari)

    本文将详细讨论一个特定的JavaScript问题,即在Internet Explorer(IE)浏览器中使用`innerHTML`属性向`&lt;select&gt;`元素插入`&lt;option&gt;`标签时遇到的bug,以及如何解决这个bug以实现跨浏览器兼容性,包括IE、Firefox、...

    JS对select控件option选项的增删改查示例代码

    为了确保兼容性,还可以通过select元素的options属性来添加新的option,这样可以同时兼容IE和Firefox浏览器。 ```javascript function addOption() { var obj = document.getElementById('mySelect'); // 兼容IE...

    Select2的插件下载.zip

    Select2具有良好的浏览器兼容性,支持现代的浏览器,包括Chrome、Firefox、Safari、Edge以及IE9及以上版本。此外,由于其基于jQuery构建,因此在与其他jQuery插件或框架(如Bootstrap)集成时,通常不会有太大问题。...

    js 操作select与option(示例讲解)

    在Web开发中,操作select和option元素是前端JavaScript编程的一个常见需求。select元素通常用作下拉列表,用户可以通过它选择一个或多个选项。option元素则是select下拉列表中的一个选项。本文将详细介绍如何使用...

    用JavaScript来美化HTML的select标签的下拉列表效果

    - 为了在多浏览器下保证兼容性,需要对主流浏览器(如Chrome、Firefox、Safari、IE/Edge等)进行测试,确保在不同环境下都能有良好的表现。 通过上述的方法,开发者可以解决select下拉列表在不同浏览器下默认样式不...

    js动态改变select选择变更option的index值示例

    在进行Web前端开发时,操作select元素是常见的任务之一。Select元素通常用于提供给用户可选择的下拉菜单。在JavaScript中,可以通过DOM操作来动态改变select的选项...以上方法在IE和Firefox等主流浏览器中均可使用。

    select标签边框的颜色select标签边框的颜色

    因此,确保代码在主流浏览器(如 Chrome、Firefox、Safari、Edge 和 IE11)上表现一致至关重要。 ### 3. 外部样式表与内联样式 你可以将这些样式放在外部 CSS 文件中,以便在整个网站中统一应用,或者直接在 HTML ...

    select多选与美化

    "select多选与美化"这个主题关注的是如何在HTML的下拉列表中实现多选功能,并且兼容各种主流浏览器,包括Firefox、Opera、Chrome、Safari以及IE6到IE9。这通常涉及到JavaScript库,特别是jQuery的使用,以及CSS样式...

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

    这些操作在IE和Firefox等主流浏览器中都应该是兼容的。当然,使用更现代的DOM操作方法,如`createElement`、`appendChild`和`removeChild`,可以提供更好的跨浏览器兼容性,但基本思想是一样的。 **取值**: - 获取...

    关于select标签的高度设置在ie6/ie7下兼容心得

    这种不一致的浏览器行为给前端开发带来了一定困扰,因为其他现代浏览器如Firefox、Chrome、Safari和Opera在这方面表现得更为一致。 面对这个问题,开发者们通常采取以下几种策略: 1. **使用JavaScript或jQuery...

    下拉列表框经典赋值适合IE火狐

    特别是在早期的Web开发中,不同的浏览器如Internet Explorer(简称IE)和Mozilla Firefox(简称火狐)对HTML、CSS以及JavaScript的支持程度和解析方式存在差异,这使得统一的代码在不同浏览器上可能呈现出不同的效果...

    editableSelect可编辑搜索的下拉框插件

    `editableSelect`通常兼容主流的现代浏览器,包括Chrome、Firefox、Safari、Edge以及IE9及以上版本。对于性能方面,由于采用实时搜索,因此在大量选项时可能需要注意优化,比如设置适当的搜索延迟或预加载机制。 ...

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

    在本篇文章中,我们将介绍如何使用JavaScript来获取HTML中的select元素的当前值,并且确保这段代码兼容主流的浏览器,包括IE、Firefox、Opera和Chrome。在Web开发中,select元素通常用来制作下拉列表,它允许用户从...

    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”

    editable select

    6. **兼容性**:jQuery Editable Select通常与现代浏览器兼容,包括Chrome、Firefox、Safari、Edge和IE9及以上版本。 在实际应用中,要使用这个插件,你需要将`jquery.js`和`jquery.editable-select.js`(以及可能...

    js select option对象小结

    例如,在IE中,我们可以使用obj.add()方法添加新选项,但在Firefox中,这种方法可能不起作用。因此,应当使用obj.options.add()这种跨浏览器的写法。 在文章的后续部分,提到了使用jQuery和Ajax技术,结合JSON数据...

Global site tag (gtag.js) - Google Analytics