繁体   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