[英]Firefox vs IE Javascript issue
我看到这个问题有很多相关的问题,并且通过它们阅读我猜这是一个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中它是一个空字符串,支持我只是找不到正确标记的想法。 任何输入都非常感谢。 谢谢。
我认为你的问题是getElementsByName
IE中的document.getElementsByName方法无法访问使用Javascript DOM创建的HTML元素。
尝试以下Google查询,并查看有关该主题的大量错误报告和沮丧信息;)
http://www.google.dk/search?sourceid=chrome&ie=UTF-8&q=getElementsByName+ie
IE中的getElementsByName不会返回Array,而是返回Object Use
for (var question = 0; question < questions.length; question ++)
代替
for (question in questions)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.