问题描述
下面这段代码是在Js中取RadioButtonList的Text和Value,在大部分浏览器上都能正常获取到,可是在火狐(MozillaFirefox)浏览器下就取不到,有大侠知道为什么呢,忘高手来修正下,谢谢//取得RadioButtonList的集合varradListItems=document.all("RadSex");//弹出RadioButtonList的Item的个数varradListItesCount=radListItems.length-1;varradListCheckedValue="";//遍历Item的Text和Valuefor(vari=1;i<=radListItesCount;i++){if(radListItems[i].checked)radListCheckedValue=radListItems[i].value;}
解决方案
解决方案二:
document.getElementById("RadSex");
解决方案三:
别的浏览器不用document.all
解决方案四:
引用2楼net_lover的回复:
别的浏览器不用document.all
我勒个去,这样就直接取不到值了,我的是<asp:RadioButtonListID="RadSex"runat="server"RepeatDirection="Horizontal"><asp:ListItemValue="男">男</asp:ListItem><asp:ListItemValue="女">女</asp:ListItem></asp:RadioButtonList>用document.getElementById貌似取不到
解决方案五:
RadioButtonList生成的不一定是<inputtype=radio而是一个表格。你应该varradListItems=document.getElementById("RadSex").getElementsByTagName("input");for(vari=0;i<radListItems.length;i++){
解决方案六:
下面是完整的代码<script>funcotionRegister(){//取得RadioButtonList的集合varradListItems=document.all("RadSex");//弹出RadioButtonList的Item的个数varradListItesCount=radListItems.length-1;varradListCheckedValue="";//遍历Item的Text和Valuefor(vari=1;i<=radListItesCount;i++){if(radListItems[i].checked)radListCheckedValue=radListItems[i].value;}//判断用户有没有选中RadioButtonList性别if(radListCheckedValue==""){alert("请选择性别");}}</script>//RadioButtonList控件集<asp:RadioButtonListID="RadSex"runat="server"RepeatDirection="Horizontal"><asp:ListItemValue="男">男</asp:ListItem><asp:ListItemValue="女">女</asp:ListItem></asp:RadioButtonList>
解决方案七:
本帖最后由 net_lover 于 2011-12-02 09:15:26 编辑
解决方案八:
该回复于2011-12-02 09:21:49被版主删除
解决方案九:
如果你放在母板页中,还需要这样写才可以。<scripttype="text/javascript">functionmyfunction1(){vars=document.getElementById("<%=RadSex.ClientID%>").getElementsByTagName("input");for(i=0;i<s.length;i++)alert(s[i].checked+":"+s[i].value);}functionmyfunction2(){vars=document.getElementsByName("<%=RadSex.UniqueID%>");for(i=0;i<s.length;i++)alert(s[i].checked+":"+s[i].value);}</script><asp:RadioButtonListID="RadSex"runat="server"RepeatDirection="Horizontal"><asp:ListItemValue="男">男</asp:ListItem><asp:ListItemValue="女">女</asp:ListItem></asp:RadioButtonList><inputtype="button"onclick="myfunction1()"value="方法1"/><inputtype="button"onclick="myfunction2()"value="方法2"/>
解决方案十:
下面的代码兼容所有浏览器。考虑几点1.aspx页面通常只有1个form。2.浏览器对表单内的元素是通过name进行定位的。3.aspx服务器控件一定会生成name属性,值为UniqueID的值varradios=document.forms[0]["<%=RadSex.UniqueID%>"];for(vari=0,l=radios.length;i<l;i++){if(radios[i].checked){alert(radios[i].value);}}
解决方案十一:
[Quote=引用8楼net_lover的回复:]谢谢孟子兄,现在我获取他选中的文本内容,也就是选中的内容radListCheckedValue=radListItems[i].nextSibling.innerText;在IE下也都可行·可是获取下有获取不到了·,纠结啊·
解决方案十二:
IE中的获取文本方法innerText在firefox中不支持用Javascript重新定义了innerText方法使得在Firefox中也可以使用innerText方法并且此方法解决了firefox中空白字符的问题代码如下:<!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.0Transitional//EN"><html><head><title></title><scripttype="text/javascript">functionisIE(){//ie?if(window.navigator.userAgent.toLowerCase().indexOf("msie")>=1)returntrue;elsereturnfalse;}if(!isIE()){//firefoxinnerTextdefineHTMLElement.prototype.__defineGetter__("innerText",function(){varanyString="";varchildS=this.childNodes;for(vari=0;i<childS.length;i++){if(childS[i].nodeType==1)anyString+=childS[i].tagName=="BR"?"rn":childS[i].textContent;elseif(childS[i].nodeType==3)anyString+=childS[i].nodeValue;}returnanyString;});HTMLElement.prototype.__defineSetter__("innerText",function(sText){this.textContent=sText;});}</script></head><body><divid="myDiv"><p>ddd</p></div><scripttype="text/javascript">alert(document.getElementById("myDiv").innerText);</script></body></html>
解决方案十三:
varel=document.getElementsByName('<%=RadSex.UniqueID%>');for(varj=0,len1=el.length;j<len1;j++){if(el[j].checked){alert('text:'+nextSibling.innerHTML+',value:'+el[j].value);}}