zoukankan      html  css  js  c++  java
  • JS对select动态添加options操作[IE&FireFox兼容]

    做一个项目,遇到了要动态调整 select 选项的情况,就baidu了一下,发现了一篇与本文同名的帖子.

    但是呢,那个帖子里的方法并不兼容.  

    附原文:

    <select id="ddlResourceType" onchange="getvalue(this)">
    </select>

       动态删除select中的所有options:
           document.getElementById("ddlResourceType").options.length=0;

         动态删除select中的某一项option:
           document.getElementById("ddlResourceType").options.remove(indx);
      
    //就是这句不兼容了,Firefox是不懂 remove 这个方法的,所以会报错了,当然也移除不了了

        动态添加select中的项option:
           document.getElementById("ddlResourceType").options.add(new Option(text,value));

       上面在IE和FireFox都能测试成功,希望以后你可以用上。
    其实用标准的DOM操作也可以,就是document.createElement,appendChild,removeChild之类的。

        取值方面
        function getvalue(obj)
         {
             var m=obj.options[obj.selectedIndex].value
             alert(m);//获取value
             var n=obj.options[obj.selectedIndex].text
             alert(n);//获取文本
         }

    后来,发现这篇文章末端的那几句话,觉得可以用dom试试,嗯,果然可行.

    var sObj=document.getElementById("ddlResourceType");

    sObj.removeChild(sObj.options[indx]);

    这样,上面这句就做到兼容了.

    其他的代码都没有问题,可以兼容. 

    1 检测是否有选中
    if (objSelect.selectedIndex > - 1 ) {
    // 说明选中
    } else {
    // 说明没有选中
    }

    2 删除被选中的项
    objSelect.options[objSelect.selectedIndex] = null ;

    3 增加项
    objSelect.options[objSelect.length] = new Option( " 你好 " , " hello " );

    4 修改所选择中的项
    objSelect.options[objSelect.selectedIndex] = new Option( " 你好 " , " hello " );

    5 得到所选择项的文本
    objSelect.options[objSelect.selectedIndex].text;

    6 得到所选择项的值
    objSelect.options[objSelect.selectedIndex].value;

    转至:http://lulitianyu.blog.163.com/blog/static/91360302007112710574596/

  • 相关阅读:
    u盘安装ubuntu10.04 、11.04 server 分类: arm-linux-Ubuntu 2013-08-12 15:47 504人阅读 评论(0) 收藏
    linux下的framebuffer显示图片 分类: arm-linux-Ubuntu 2013-08-12 15:43 506人阅读 评论(0) 收藏
    Sql Server专题:SQL 经典实例
    1054 求平均值 (20 分)
    1052 卖个萌 (20 分)
    1053 住房空置率 (20 分)
    1050 螺旋矩阵 (25 分
    1051 复数乘法 (15 分)
    1049 数列的片段和 (20 分)
    1046 划拳 (15 分)
  • 原文地址:https://www.cnblogs.com/load/p/2267207.html
Copyright © 2011-2022 走看看