2011-02-03 71 views
0

我看到这个问题上有很多相关的问题,并通读它们我猜这是一个getElementById问题,因为这似乎是其他人问题中的问题,米不太确定我做错了什么。在Firefox错误控制台和萤火对以下工作,没有消息显示正确的价值观:Firefox vs IE Javascript问题

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="" />

的想法是,当选择的变化,它会调用JS和存储从所有选择语句到ASP.NET控件中的值(我被要求使用一系列令人烦恼的需求和遗留代码的笨重工作)。

最终警报在Firefox中具有预期值,但在IE7中它是一个空字符串,支持我只是找不到正确标记的想法。任何输入是不胜感激。谢谢。

+0

这个代码与asp.net控制取代textarea工作好在两个 – www0z0k 2011-02-03 23:35:24

回答

1

getElementsByName在IE浏览器没有返回数组,但返回Object 使用

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

而不是

for (question in questions)