2014-01-12 7 views
0

Здравствуйте, я пытаюсь создать приложение, которое принимает входные данные от пользователя, а затем отправляет его в массив, который будет напечатан на экране. У меня возникли проблемы с правильной настройкой массива и печать на экран. Вот то, что я до сих пор:Проблема с массивами JavaScript с результатами печати

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."); 

     } 
} 
+0

Добро пожаловать в StackOverflow! Будет легче ответить на ваш вопрос, если вы можете указать, что представляет собой текущий вывод и что вы ожидаете увидеть? – kukido

ответ

0

Вы должны использовать другой вар для побудила продуктовом:

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; 
    } 
} 

В вашем старом коде, вы используете один и тот же вар myGroceries для вашего массива и элемента, так он был перезаписан строкой подсказки.

В вашем старом коде вы использовали тот же var myGroceries для вашего массива и элемента, поэтому он был перезаписан строкой приглашения.

EDIT Хотя выше правильно, это было бы чище 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); 

Приветствия

+0

Это сработало отлично. Спасибо за быстрый ответ! – McFly

+0

Добро пожаловать :). Не могли бы вы пометить мой ответ как принятый? –

0

Ваша функция

function printGroceries() { 

не принимает каких-либо параметров, в то время как вы передаете бакалею Это. она должна быть

function printGroceries(myGroceries) { 

и использовать различные переменные для стремительные

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

Я попробовал это один раз, и это не сработало. Возможно, я не сохранил свои изменения. – McFly

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

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(); 
Смежные вопросы