2011-02-03 69 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)