除最后一个数组元素外,所有数组元素均未定义?

时间:2018-11-11 12:48:26

标签: javascript arrays undefined

所以我们的老师给了我们作业。我们应该编写一个程序,询问用户要输入多少个数字,然后要求他们多次输入一个数字,直到获得用户想要提供的所有数字为止。然后,程序应显示或输出用户以前输入或输入的数字。 这是我的方法:

<html>
<script>
  amount = prompt("How many numbers do you wish to input?");
  amount1 = amount - 1;
  for (i = 0; i <= amount1; i++) {
    a = i + 1;
    var input = [];
    input[i] = prompt("Please enter the " + a + ". number:");
  }
  alert(input.toString());
</script>

</html>

但是,输出不是我期望的那样。假设我们输入5个数字,12345,那么最终结果将显示,,,,5 如果我没记错的话,这意味着除最后一个元素外,所有元素都是undefined。有谁知道为什么会发生这种情况以及如何避免呢?

2 个答案:

答案 0 :(得分:1)

只需将var input = [];变量初始化移出for循环,就可以了。

为什么它对您不起作用:每次使用此行var input = [];重置输入数组的值时,这就是为什么数组中只有最后一个元素可见的原因:(,所以当您退出循环时,它将按预期工作。

 amount = prompt("How many numbers do you wish to input?");
  amount1 = amount - 1;
  var input = [];
  for (i = 0; i <= amount1; i++) {
    a = i + 1;
    
    input[i] = prompt("Please enter the " + a + ". number:");
  }
  alert(input.toString());

答案 1 :(得分:0)

<select name="animationDelayTime">
    <option value="0.1">0.1s</option>
    <option value="0.2">0.2s</option>
    <option value="0.3">0.3s</option>
    <option value="0.4">0.4s</option>
    <option value="0.5">0.5s</option>
    <option value="0.6">0.6s</option>
    <option value="0.7">0.7s</option>
    <option value="0.8">0.8s</option>
    <option value="0.9">0.9s</option>
    <option value="1.0">1.0s</option>
    <option value="1.1">1.1s</option>
    <option value="1.2">1.2s</option>
    <option value="1.3">1.3s</option>
</select>