Firefox vs IE Javascript问题

时间:2011-02-03 23:12:35

标签: javascript asp.net internet-explorer firefox

我看到有很多关于这个问题的相关问题,并且通过它们阅读我猜这是一个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中它是一个空字符串,支持我只是找不到正确标记的想法。任何输入都非常感谢。谢谢。

2 个答案:

答案 0 :(得分:1)

我认为你的问题出在getElementsByName

  

使用Javascript创建的HTML元素   DOM无法访问   document.getElementsByName方法   IE。

尝试以下谷歌查询,看到过多的错误报告和对此主题的挫败感;)

http://www.google.dk/search?sourceid=chrome&ie=UTF-8&q=getElementsByName+ie

答案 1 :(得分:1)

IE中的 getElementsByName不返回Array但返回Object 使用

for (var question  = 0; question < questions.length; question ++)

而不是

for (question in questions)