2012-02-09 5 views
-1

Еще раз другое задание Мне нужна помощь. Все, что мне нужно, это проверить только работу и рассказать мне, почему элементы в первом массиве не работают должным образом с соответствующим номером, который вводит пользователь.JavaScript - Что я делаю неправильно?

Направления:

Создайте новый файл с именем a5_yourname.html. Выполните следующие шаги, чтобы написать скрипт, который будет запрашивать у пользователя два номера. Один даст тип хлеба, который выбрал другой тип заполнения, выбранный для сэндвича.

Используйте эти варианты, чтобы отобразить инструкцию, которая будет извлекать правильное имя хлеба и заполнение из перспективных массивов для отправки предупреждающего сообщения пользователю. Используйте имена переменных и сообщения, как они описаны в шагах.

A. Создайте массив с именем "breadArray". Введите следующие значения в breadArray: white, wheat, rye, wrap

B. Создайте второй массив с именем «fillArray». Введите следующие значения в fillArray: ветчину, индейку, яичный салат, говядину, арахисовое масло

C. С помощью подсказки сообщите пользователю, какой тип хлеба есть, давая каждому номер и предлагая им выбрать хлеб по числу.

Нравится: Выбор хлеба: 1 для белого, 2 для пшеницы, 3 для ржи и 4 для обертывания. Пожалуйста, выберите тип хлеба для вашего сэндвича, используя число от 1 до 4.

D. Используйте инструкцию «if» - «else» и функцию «isNaN», чтобы определить, введен ли пользователь в число. Проверьте, находится ли номер в пределах диапазона. Если они не вошли в действительное число, отобразите в окне предупреждения сообщение с просьбой ввести номер. Повторите этот шаг и после шага «F».

E. Сохраните номер, указанный в переменной с названием "breadChoice".

F. Используйте подсказку, чтобы сообщить пользователю, какие типы начинок есть, давая каждому номер и просим их выбрать заполнение по номеру. как: Начинка варианты: 1 для ветчины, 2 индейки, 3 яичных салата, 4 говядины, и 5 арахисового масло Пожалуйста, выберите тип заполнения для бутерброда, используя цифры от 1 до 5.

G Сохраните номер, указанный в переменной с именем «fillChoice».

H. Если пользователь ввел действительный номер, используйте цифры, указанные пользователем, чтобы извлечь правильный хлеб и заполнить его из соответствующего массива для бутерброда и отобразить следующее сообщение, используя инструкцию document.write:

«Я закажу вам« имя заполнения »на« бутерброд с названием хлеба »на обед». Пример: Если пользователь вводит 1 для хлеба и 2 для заполнения, то сообщение должно быть указано: Я закажу у вас ветчина на сэндвиче с пшеницей на обед.

Мой код:

<head> 

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

    <title>Assignment 5: Arrays</title> 

    <script type="text/javascript"> 

     // Variable Declarations 

      var breadArray = new Array ("white","wheat","rye","wrap"); 
      var fillingArray = new Array ("ham","turkey","egg salad","beef","peanut butter") 
      var breadChoice; 
      var fillingChoice; 

     // Assignments 

      breadChoice = Number(prompt("Bread choices are: 1 for White, 2 for Wheat, 3 for Rye, or 4 for a Wrap. Please select the type of bread for you sandwich using a number from 1 to 4"),0)-1; 
      fillingChoice = Number(prompt("Filling choices are: 1 for ham, 2 for turkey, 3 egg salad, 4 beef, or 5 peanut butter. Please select the type of filling for your sandwich using a number from 1 to 5"),0)-1; 

     // Calculations 

      // none 


     // Output 


     if (breadArray[breadChoice] && fillingArray[fillingChoice]) 
     { 
     alert("Thanks! I am now calculating your sandwich order."); 
     } 
     else 
     { 
      alert("Sorry. You did not enter a correct numeric value, please try again!"); 
     } 



     document.write("I will order you a &nbsp;" +fillingArray[fillingChoice] +"&nbsp; on &nbsp;" +breadArray[breadChoice] +"&nbsp; sandwich for lunch"); 

    </script> 

</head> 

<body> 

</body> 

+1

Какая ошибка у вас возникла? – scottm

+0

ошибка заключается в том, что иногда я говорю о неопределенном выборе варианта заполнения, когда я ввожу действительное число. Я думаю, что проблема в том, что это действительно так. Я думаю, может быть, я должен удалить предупреждения, объединить первые два ifs и добавить документ в файл, если он выводит только сандвич-порядок, если пользователь вводит правильный номер. – StephanieKay

ответ

2

Ошибка в том, что иногда я говорю о неопределенном выборе варианта заполнения при вводе действительного числа.

Это произойдет, если пользователь вводит 4 когда propmted для breadChoice, поскольку breadArray[4] фактически не определен (четвертый и последний элемент breadArray[3]).

Чтобы предотвратить это, вы можете использовать:

breadChoice = Number(...) - 1; 

Я думаю, что проблема моя, если другое заявление на самом деле.

Нет, но это не так, тем не менее. Ваш оператор if-else выполнит alert("Thanks!...); в первом и втором случаях, но в каждом только одно условие получает подтверждение. Я предлагаю использовать

if (breadArray[breadChoice] && fillingArray[fillingChoice]) 
    alert("Thanks! I am now calculating your sandwich order."); 
else 
    alert("Sorry. You did not enter a correct numeric value, please try again!"); 

, который будет просто проверить, если breadArray[breadChoice] и fillingArray[fillingChoice] определены.

+0

ладно, но что, если они не вводите действительный номер тогда? – StephanieKay

+0

'breadArray [" nonsense "]' is 'undefined', поэтому условие' if' является ложным и оно предупреждает * Извините ... *. Это работает намного лучше, чем численное сравнение. если кто-то войдет в «2.5»? – Dennis

+0

ОК, спасибо! Извините, я новичок в этом – StephanieKay

2

Массивы в JavaScript (как и многие, но не все, языки программирования) начать нумерацию первого элемента с индексом 0, а не 1.

+0

вправо, но второй массив в порядке. Я понимаю, что индексирование начинается с нуля, но когда пользователь говорит 1 для белого хлеба, он должен знать, использовать 0 для массива и взамен, вывести первый индекс (ноль) – StephanieKay

+1

Так что используйте 'breadChoice = Number (...) - 1; 'или' breadArray [breadChoice - 1] '. – Dennis

+0

Или запросите пользователя '" 0 для белого, 1 для пшеницы, ... "'. Javascript не может «знать», что вам действительно нужен индекс 0, когда вы запрашиваете индекс 1. –

2

Массивы начинаются с 0, а не 1. Итак, если я введу 1 для белого хлеба, вам нужно будет вычесть его из этого, чтобы получить правильное положение в массиве:

document.write("I will order you a &nbsp;" +fillingArray[fillingChoice-1] +"&nbsp; on &nbsp;" +breadArray[breadChoice-1] +"&nbsp; sandwich for lunch"); 
Смежные вопросы