簡體   English   中英

Javascript數組未填充

[英]Javascript Array not being filled

因此,我試圖自我學習HTML和Jscript,但我無法終生弄清楚我在這段代碼中做錯了什么,它是一個下拉問題列表,詢問用戶他們喜歡什么水果,以及要求做出9個答案,因此此腳本將捕獲這些答案並將其存儲在數組中,但是當它在循環外中斷時,不會顯示最后一個警報,因此我可以看到數組實際上沒有被填充。

我使用警報進行錯誤檢查:)

 <script>
      function submitInfo(passed){
           var Fruit = [];
           var myForm = passed+"Form";

           //alert("here start"+" "+document.getElementById(myForm).length+" "+myForm);
           for (var i = 0; i < document.getElementById(myForm).length; i++) {
                //alert("in loop");
                var myFruit = passed+"Input"+i;
                //alert(myFruit+" "+document.getElementById(myFruit).value);

                Fruit.push(document.getElementById(myFruit).value);
                // var Fruit[i] = document.getElementById(myFruit).value;
                alert(Fruit[i]);
           }
           alert(Fruit[i]);
      }
 </script>

預先感謝您的任何幫助,不勝感激

陣列已正確填充,只是您未正確測試它。

原因是因為在循環之后, i等於document.getElementById(myForm).length 因此,當您使用它訪問Fruit數組時,您將訪問尚未填充的索引。 您可以通過在循環后執行以下操作來證明這一點:

alert(i);

例如,如果document.getElementById(myForm).length5 您的循環將運行0..4但在決定中斷循環之前,它仍將增加到5 (它必須增加它以便可以評估條件)。 此時,您的數組中將有5個項目(索引0-4)。 然后,當您調用最后一個警報時, i = 5 ,但是Fruit[5]不存在。

如果要將最后一個警報(循環后)更改為Fruit[0]它將顯示第一項。 您也可以執行console.log(Fruit)並檢查控制台中陣列的全部內容。

這可能有助於更好地演示它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM