Javascript - 在用户输入特定值之前提示值(并向数组添加值)

时间:2012-12-24 16:05:12

标签: javascript arrays loops

女士们,先生们,

我被困住了。在尝试让我的代码工作时,我一直在思考这个问题(显然已经失败,因为我要求你提供宝贵的帮助)。

我需要提出一个简单的(...对不起,我是新手)代码,提示用户继续使用循环输入名称。如果用户没有输入'q'(没有引号),并且输入的值是非null,那么输入的值应该添加到数组中(在我的例子中,名称)。

如果用户输入'q',循环应该停止,'q'将不会在数组中输入,并且应该打印名称列表(通过我的代码中的第二个函数)。

这是我到目前为止所拥有的...如果我告诉循环运行i< 5 ...它运行5次然后停止,我可以使代码工作。但如果我这样做,那就失败了。 names.length..it导致它说长度为null或不是对象(在第10行)。这是一个问题。而对于我的生活,我无法弄清楚如何添加将运行循环的逻辑,直到用户输入q。

请帮忙!

谢谢。

function getNames(){
var names = new Array();
    for(i=0;i<names.length;i++){ /*if i do i=0;i<5;i++, the code works; it doesn't with this*/
    names[i] = prompt("Enter an item to add to the Name list (enter \'q\' to quit","");
}
printNames(names);
}

function printNames(names) {
for(x=0; x < names.length;x++){
document.write(names[x] + '<br />');
}

}
getNames();
printNames();

2 个答案:

答案 0 :(得分:2)

我相信你班级/书中的某个地方会谈到while loops。因此,如果您希望它们在没有限制的情况下继续输入,您希望使用while循环。

while (myCondition===true) {
  //do something
}

现在看看你的for循环并弄清楚它失败的原因。

for(i=0;i<names.length;i++)

看看它在做什么:

  • i = 0
  • names.length = 0

0 < 0

答案 1 :(得分:0)

从问题1开始:

您的names数组以length属性值0开头,因此您的第一个for循环不会运行,因为0不小于0.

导致问题2:

再次,因为没有任何内容输入到你的名字数组中,你的第二个for循环再没有做任何事情并且不执行document.write,因为你的数组的length属性仍然是0。