下面这段代码是在Js中取RadioButtonList的Text和Value,在大部分浏览器上都能正常获取到,可是在火狐(Mozilla Firefox)浏览器下就取不到,有大侠知道为什么呢,忘高手来修正下,谢谢            //取得RadioButtonList的集合
            var radListItems = document.all("RadSex");            //弹出RadioButtonList的Item的个数
            var radListItesCount = radListItems.length - 1;            var radListCheckedValue = "";
            //遍历Item的Text和Value
            for (var i = 1; i <= radListItesCount; i++) {                if (radListItems[i].checked)
                    radListCheckedValue = radListItems[i].value;            }

解决方案 »

  1.   

    别的浏览器不用 document.all
      

  2.   

    我勒个去,这样就直接取不到值了,我的是
    <asp:RadioButtonList ID="RadSex" runat="server" RepeatDirection="Horizontal">
        <asp:ListItem Value="男">男</asp:ListItem>
        <asp:ListItem Value="女">女</asp:ListItem>
        </asp:RadioButtonList>
    用document.getElementById貌似取不到
      

  3.   

    RadioButtonList 生成的不一定是<input type=radio 而是一个表格。
    你应该var radListItems = document.getElementById("RadSex").getElementsByTagName("input");
    for (var i = 0; i < radListItems .length; i++) {
      

  4.   

    下面是完整的代码<script>
     funcotion Register(){            //取得RadioButtonList的集合
                var radListItems = document.all("RadSex");            //弹出RadioButtonList的Item的个数
                var radListItesCount = radListItems.length - 1;            var radListCheckedValue = "";
                //遍历Item的Text和Value
                for (var i = 1; i <= radListItesCount; i++) {                if (radListItems[i].checked)
                        radListCheckedValue = radListItems[i].value;            }       //判断用户有没有选中RadioButtonList性别
           if (radListCheckedValue == "") {            alert("请选择性别");          }}</script>//RadioButtonList控件集
    <asp:RadioButtonList ID="RadSex" runat="server" RepeatDirection="Horizontal">
        <asp:ListItem Value="男">男</asp:ListItem>
        <asp:ListItem Value="女">女</asp:ListItem>
        </asp:RadioButtonList>
      

  5.   

    本帖最后由 net_lover 于 2011-12-02 09:15:26 编辑
      

  6.   

    如果你放在母板页中, 还需要这样写才可以。
    <script type="text/javascript">
    function myfunction1() {
      var s = document.getElementById("<%=RadSex.ClientID %>").getElementsByTagName("input");
      for (i = 0; i < s.length; i++)
        alert(s[i].checked + " : " + s[i].value);
    }
    function myfunction2() {
      var s = document.getElementsByName("<%=RadSex.UniqueID%>");
      for (i = 0; i < s.length; i++)
        alert(s[i].checked + " : " + s[i].value);
    }</script>
    <asp:RadioButtonList ID="RadSex" runat="server" RepeatDirection="Horizontal">
    <asp:ListItem Value="男">男</asp:ListItem>
    <asp:ListItem Value="女">女</asp:ListItem>
    </asp:RadioButtonList>
    <input type="button" onclick="myfunction1()" value="方法1" />
    <input type="button" onclick="myfunction2()" value="方法2" />
      

  7.   

    下面的代码兼容所有浏览器。
    考虑几点
    1. aspx页面通常只有1个form。
    2.浏览器对表单内的元素是通过name进行定位的。
    3.aspx服务器控件一定会生成name属性,值为UniqueID的值var radios = document.forms[0]["<%=RadSex.UniqueID%>"];
    for(var i=0,l=radios.length;i<l;i++)
    {
    if(radios[i].checked)
    {
    alert(radios[i].value);
    }
    }
      

  8.   

    [Quote=引用 8 楼 net_lover 的回复:]谢谢孟子兄,现在我获取他选中的文本内容,也就是选中的内容
    radListCheckedValue = radListItems[i].nextSibling.innerText;
    在IE下也都可行·可是获取下有获取不到了·,纠结啊·
      

  9.   

    IE中的获取文本方法innerText在firefox中不支持用Javascript重新定义了innerText方法 使得在Firefox中也可以使用innerText方法 并且此方法解决了firefox中空白字符的问题 代码如下:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
        <title></title>
        <script type="text/javascript">
    function isIE()
        { //ie?
            if (window.navigator.userAgent.toLowerCase().indexOf("msie") >= 1)
                return true;
            else
                return false;
        }    if (!isIE())
        { //firefox innerText define
            HTMLElement.prototype.__defineGetter__("innerText",
            function ()
            {
                var anyString = "";
                var childS = this.childNodes;
                for (var i = 0; i < childS.length; i++)
                {
                    if (childS[i].nodeType == 1)
                        anyString += childS[i].tagName == "BR"
                         ? "\r\n" : childS[i].textContent;
                    else if (childS[i].nodeType == 3)
                        anyString += childS[i].nodeValue;
                }
                return anyString;
            });
            HTMLElement.prototype.__defineSetter__("innerText",
            function (sText)
            {
                this.textContent = sText;
            });
        }
    </script>
    </head>
    <body>
    <div id="myDiv">
        <p>
            ddd</p>
    </div>
    <script type="text/javascript">
    alert(document.getElementById("myDiv").innerText);
    </script>
    </body></html>
      

  10.   

                    var el = document.getElementsByName('<%=RadSex.UniqueID%>');
                    for (var j = 0, len1 = el.length; j < len1; j++) {
                        if (el[j].checked) {
                              alert('text:'+nextSibling.innerHTML+',value:'+el[j].value);       
                        }
                    }