document.getElementById返回null

时间:2014-07-10 11:31:07

标签: javascript html

当我运行它并给出任何输入数字并按下按钮时它只提示一次。这是为什么?

这是我的代码:

    <html>
    <head> <title> Assignment CS101 </title> </head>
    <script>
    var number;
    var ary;
    var x;  
    function input()
           {
               prompt("Enter","");
               var recieve=document.getElementById('demo');
               number=recieve.value;
               ary = new Array(recieve);
               for(x=0; x<ary.length; x++)
                   {
                     ary[x]=parseInt(prompt("Enter " + x + " name: ",""));
                   }
           }
   </script>
   <input type="text" size="25" id="demo"> <button onclick="input();"> Take input          </button>

5 个答案:

答案 0 :(得分:3)

问题在于你采用了“演示”的价值。这是一个字符串。并尝试使用该字符串创建一个新的数组。 for循环将运行一次,因为你将一个字符串放入其中。

ary = new Array(recieve);

应该使用&#39; parseInt()&#39;

number = parseInt(recieve.value,10);
ary = new Array();
for(var i = 0; i < number; i ++) {

答案 1 :(得分:0)

我仍然有点不清楚你的目的是什么,但尝试而不是循环遍历你的数组长度,循环遍历你的number变量

for(x =0; x< number; x++)
{
    ary[x] = parseInt(prompt("Enter " + x+ " name: ", ""),10);
}

答案 2 :(得分:0)

它只提示一次,因为您指的是ary[x]循环中for的长度。但是,在for循环播放前的行上,您将ary定义为new Array(receive),其长度为1。

您希望将ary定义为函数外的new Array()(因此它是全局的)。然后,您可以使用ary.push(receive)将值推送到prompt,假设您正在尝试执行此操作(不确定{for循环中{{1}}的用途是什么)

答案 3 :(得分:0)

你创建一个只包含一个元素的数组,因为输入中的值是一个带数字的字符串,但还没有数字。

function input() {
  prompt("Enter","");
  var number = parseInt(document.getElementById('demo').value,10);
  ary = new Array();
  for(x=0; x < number; x++) {
    ary.push(parseInt(prompt("Enter " + x + " name: ","")),10);
  }
}

答案 4 :(得分:0)

怎么样:

ary = new Array(number);
for(x=0; x<number; x++)
{
  ary[x]=parseInt(prompt("Enter " + x + " name: ",""),10);
}