[英]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).length
为5
。 您的循环将运行0..4
但在决定中断循环之前,它仍将增加到5
(它必须增加它以便可以评估条件)。 此时,您的数组中将有5个项目(索引0-4)。 然后,当您调用最后一个警报时, i = 5
,但是Fruit[5]
不存在。
如果要将最后一个警报(循环后)更改为Fruit[0]
它将显示第一项。 您也可以执行console.log(Fruit)
并检查控制台中阵列的全部内容。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.