我看到有很多关于这个问题的相关问题,并且通过它们阅读我猜这是一个getElementById问题,因为这似乎是其他人的问题,但我不太确定是什么我做错了。以下内容适用于FireFox,错误控制台上没有消息,FireBug显示正确的值:
function updateSQ() {
var sQuestion = document.getElementById('<%=sQuestion.ClientID%>');
sQuestion.value = "";
var questions = document.getElementsByName('selectQuestion');
for (question in questions) {
if (questions[question].value != null)
sQuestion.value += questions[question].value + ",";
}
alert(sQuestion.value);
}
此函数由动态生成的html选择标记调用:
<SELECT id="squestion1" name="selectQuestion" onchange="updateSQ();">
<OPTION value="notChosen">--Please Select One--</OPTION>
<OPTION value="in">India</OPTION>
<OPTION value="de">Germany</OPTION>
<OPTION value="fr">France</OPTION>
<OPTION value="us">United States</OPTION>
<OPTION value="ch">Switzerland</OPTION>
</SELECT>
如您所见,javascript正在尝试更新ASP.NET控件的值:
<asp:HiddenField ID="sQuestion" runat="server" value="" />
这个想法是,当select更改时,它会调用JS并将所有select语句中的值存储到ASP.NET控件中(对于一组烦人的需求和遗留代码我来说是一种笨重的工作方式)要求使用)。
最终警报在Firefox中具有预期值,但在IE7中它是一个空字符串,支持我只是找不到正确标记的想法。任何输入都非常感谢。谢谢。
答案 0 :(得分:1)
我认为你的问题出在getElementsByName
使用Javascript创建的HTML元素 DOM无法访问 document.getElementsByName方法 IE。
尝试以下谷歌查询,看到过多的错误报告和对此主题的挫败感;)
http://www.google.dk/search?sourceid=chrome&ie=UTF-8&q=getElementsByName+ie
答案 1 :(得分:1)
for (var question = 0; question < questions.length; question ++)
而不是
for (question in questions)