打印结果的JavaScript数组问题

时间:2014-01-12 03:47:49

标签: javascript html5

您好我正在尝试创建一个接受用户输入然后将其发送到阵列以打印到屏幕的应用程序。我无法正确循环数组,并打印到屏幕上。这是我到目前为止所做的:

var groceries = getGroceries();
printGroceries(groceries);

function getGroceries() {

    var canExit = false;
    var myGroceries = new Array();
    while (myGroceries != 'q') {

        myGroceries = prompt("Enter an item to add to the grocery list (enter \‘q\’ to quit):", null);

        if ((myGroceries !== null) && (myGroceries != "q")) {
            myGroceries.push(myGroceries);
            canExit = true;
        }
    }
    return myGroceries;

}

function printGroceries() {

    if (myGroceries.length > 0) {
        document.write("Here’s your grocery list:<br><br>" + myGroceries.join("<br><br>"));

        } else {
            document.write("Sorry, your list is empty.");

        }
}

4 个答案:

答案 0 :(得分:0)

您应该为提示的杂货使用另一个var:

var grocery = null;  //Add this var
while (grocery != 'q') {
    grocery = prompt("Enter an item to add to the grocery list (enter \‘q\’ to quit):", null);

    if ((grocery !== null) && (grocery != "q")) {
        myGroceries.push(grocery);
        canExit = true;
    }
}

在您的旧代码中,您对数组和项使用相同的var myGroceries,因此它被提示字符串覆盖。

在您的旧代码中,您对数组和项使用相同的var myGroceries,因此它被提示字符串覆盖。

编辑虽然以上是正确的,但这将是更清洁的IMO

var grocery;
do{
   grocery = prompt("Enter an item to add to the grocery list (enter \‘q\’ to quit):", null);
}while (grocery != 'q' && grocery !== null);
myGroceries.push(grocery);

干杯

答案 1 :(得分:0)

你的功能

function printGroceries() { 

不接受任何参数,而您正在将杂货传递给它。它应该是

function printGroceries(myGroceries) {

并使用不同的变量进行提示

myprompt = prompt("Enter an item to add to the grocery list (enter \‘q\

答案 2 :(得分:0)

您的代码有很多问题(重复变量,对局部变量的未定义引用等)。尝试

    function getGroceries() {

        var canExit = false;
        var myGroceries = [];
        var myGroceriesPrompt = prompt("Enter an item to add to the grocery list (enter \‘q\’ to quit):", null);

            if ((myGroceriesPrompt !== null) && (myGroceriesPrompt != "q")) {
                myGroceries.push(myGroceriesPrompt);
                canExit = true;
            }
        return myGroceries;

    }

    function printGroceries(groceries) {

        if (groceries.length > 0) {
            document.write("Here’s your grocery list:" + groceries.join("<br></br>"));

        } else {
            document.write("Sorry, your list is empty.");

        }
    }
    var groceries = getGroceries();
    printGroceries(groceries);

myGroceries 已经定义,虽然您尝试访问杂货(两次),但您尝试访问它。此外,您尝试在定义函数之前调用函数。

<强> DEMO

答案 3 :(得分:0)

我让它按照应有的方式工作。我不得不修复很多错误。包括执行具有相同变量的不同方法的两个不同的事物。声明时错误放置。还有其他我忘记的事情。我还将document.write更改为console.log。不建议使用document.write。但如果你坚持使用它,只需将console.logs更改为document.write。

var grocerieitem;
var myGroceries = [];

function getGroceries() {

        grocerieitem = prompt("Enter an item to add to the grocery list (enter q to quit)");

        if ((grocerieitem !== null) && (grocerieitem != "q")) {
            myGroceries.push(grocerieitem);
            getGroceries();

        }
        else {
        printGroceries(myGroceries);
        }
}

function printGroceries() {

    if (myGroceries.length > 0) {
        console.log("Here’s your grocery list:<br><br>" + myGroceries.join("<br><br>"));

        } else {
            console.log("Sorry, your list is empty.");

        }
}

getGroceries();