【发布时间】:2015-04-20 20:49:24
【问题描述】:
我正在创建一个问题和答案页面,答案是 asp.net 单选按钮列表的集合,如下所示:`
<div class="col-md-4">
<asp:RadioButtonList ID="Q1AnswersRadioButtonList" runat="server" RepeatLayout="Flow">
<asp:ListItem Value="Q1OptionARadioButton"></asp:ListItem>
<asp:ListItem Value="Q1OptionBRadioButton"></asp:ListItem>
<asp:ListItem Value="Q1OptionCRadioButton"></asp:ListItem>
<asp:ListItem Value="Q1OptionDRadioButton"></asp:ListItem>
</asp:RadioButtonList>
<br />
<textarea class="text-danger" id="Q1CorrectAnswerText" name="Q1CorrectAnswerText" readonly="readonly" wrap="soft"></textarea>
</div>
现在,我正在使用以下 JavaScript 函数循环查找用户选择了哪一个。以下是 JavaScript 代码。
function GetUserAnswerOneSelection()
{
var elementRef = document.getElementById('Q1AnswersRadioButtonList');
var radioButtonListArray = elementRef.getElementsByTagName('input');
var checkedValues = '';
for (var i = 0; i < radioButtonListArray.length; i++) {
var radioButtonRef = radioButtonListArray[i];
if (radioButtonRef.checked == true) {
// To get the Text property, use this code:
var labelArray = radioButtonRef.parentNode.getElementsByTagName('label');
if (labelArray.length > 0) {
if (checkedValues.length > 0)
checkedValues += ', ';
checkedValues += labelArray[i].innerHTML;
}
}
}
userAnswer1 = checkedValues;
return userAnswer1;
}
现在的问题是,它总是在这一行中断 var radioButtonListArray = elementRef.getElementsByTagName('input'); 并报告未定义。 我需要帮助。
【问题讨论】:
-
你确定
elementRef在这里不为空吗? WebForms 有一个烦人的特性,它不会用你在代码中指定的 ID 来命名你的对象。 -
您使用的是什么版本的 .NET?旧版本倾向于在控件名称前加上其容器的名称(当然还有经典的“ctl00”东西)——因此您在代码中键入的 id 可能会以不同的方式呈现,因此无法找到,从而使 elementRef 为空。使用较新的版本(我认为是 4 版本)允许您在呈现 HTML 时指定命名约定,因此您可以将其设置为“静态”,以便按字面意思输出名称。
-
哪个浏览器?是火狐吗?
-
非常感谢。是的,它给了我空值。我正在使用 Visual Studio 2013 社区版。我不知道该怎么办。我现在很沮丧大约3天。请问我该怎么办?
-
我在 Windows 10 技术预览版上使用 Internet Explorer,还使用了 firefox、chrome 和 maxthon
标签: javascript c# asp.net radio-button