我有一个RadioButtonList
<asp:radiobuttonlist runat="server" id="rblList">
<asp:listitem>s1</asp:listitem>
<asp:listitem>s2</asp:listitem>
<asp:listitem>s3</asp:listitem>
<asp:listitem>s4</asp:listitem>
</asp:radiobuttonlist>
在我的客户端代码中,我正在抓住像这样的单选按钮数组
var elements = document.getElementsByName("rblList");
为什么我得到5件而不是4件?它使elements
像一个基于1的数组。
答案 0 :(得分:2)
我的猜测是,您在页面上有另一个名为rblList
的元素。使用以下测试:
<asp:RadioButtonList ID="RadioButtonList1" runat="server">
<asp:ListItem>S1</asp:ListItem>
<asp:ListItem>S2</asp:ListItem>
<asp:ListItem>S3</asp:ListItem>
<asp:ListItem>S4</asp:ListItem>
</asp:RadioButtonList>
<script type="text/javascript">
function test() {
var foo = document.getElementsByName('<%=this.RadioButtonList1.UniqueID %>');
alert(foo.length);
return true;
}
</script>
我有四个元素。
答案 1 :(得分:1)
好的,所以RadioButtonList会产生以下HTML
<table id="rblList" border="0">
<tr>
<td><input id="rblList_0" type="radio" name="rblList" value="s1" /><label for="rblList_0">s1</label></td>
</tr>
<tr>
<td><input id="rblList_1" type="radio" name="rblList" value="s2" /><label for="rblList_1">s2</label></td>
</tr>
<tr>
<td><input id="rblList_2" type="radio" name="rblList" value="s3" /><label for="rblList_2">s3</label></td>
</tr>
<tr>
<td><input id="rblList_3" type="radio" name="rblList" value="s4" /><label for="rblList_3">s4</label></td>
</tr>
</table>
根据MSDN,我得到了5个元素,因为我正在获取单选按钮和ASP.Net所在的表:
http://msdn.microsoft.com/en-us/library/ms536438%28VS.85%29.aspx
使用getElementsByName方法时,文档中的所有元素 具有指定的NAME属性 或返回ID属性值。
所以,在页面上放一些javaScript:
function showEle() {
var elements = document.getElementsByName("rblList");
alert("elements length=" + elements.length);
for (var i = 0; i < elements.length; i++) {
try {
alert("elements[" + i + "]" + ", id=" + elements[i].id + ", name=" + elements[i].name + ", value = " + elements[i].value);
}
catch (ex) {
alert("error reading elements[" + i + "].value");
}
}
}
我能看到这个......
elements [0],id = rblList,name = undefined,value = undefined
elements [1],id = rblList_0,name = rblList,value = s1
elements [2],id = rblList_1,name = rblList,value = s2
elements [3],id = rblList_2,name = rblList,value = s3
elements [4],id = rblList_3,name = rblList,value = s4
element[0]
,其他是单选按钮
答案 2 :(得分:0)
尝试查看代码创建的HTML(即“查看源代码”)。可能该元素没有名称 rblList
,而是 id 。在这种情况下,我建议使用getElementsByID
。
答案 3 :(得分:0)
你的代码中有一个runat =“server”和许多asp-tags ......这意味着你的代码示例是服务器端代码,在发送给客户端之前将用html替换。
查看你的HTML,你会找到原因!
...并检查“name”属性... getElementsByName返回具有特定“name”属性的所有元素。可能有几个。
如果你想按ID(唯一)选择它是getElementByID(没有元素的复数')。