2012-02-09 141 views
-1

又一次我需要幫助的任務。我所需要的僅僅是檢查過的工作,並告訴我爲什麼第一個數組中的項目無法正確工作到用戶輸入的相應數字。JavaScript - 我做錯了什麼?

路線:

創建a5_yourname.html命名爲新的文件。使用下面的步驟編寫一個將提示用戶輸入兩個數字的腳本。一個人會選擇另一種選擇的麪包類型作爲三明治。

使用這些選項可以顯示一個語句,該語句將提取麪包的正確名稱並從透視陣列中填充以向用戶發送警報消息。按照步驟中所述使用變量名稱和消息。

A.創建一個名爲「breadArray」的數組。在breadArray中輸入以下值:白色,小麥,黑麥,包裝

B.創建名爲「fillingArray」的第二個數組。在fillArray中輸入以下數值:火腿,火雞,雞蛋沙拉,牛肉,花生醬

C.使用提示告訴用戶什麼類型的麪包,給他們每個數字,並要求他們選擇麪包由數字。

喜歡: 麪包的選擇是:白色1,小麥2,黑麥3和包裝4。 請使用從1到4的數字來選擇您的三明治的麪包類型。

D.使用「if」 - 「else」語句和「isNaN」函數來確定用戶是否輸入了數字。測試數字是否在範圍內。如果他們沒有輸入有效的號碼,則會顯示一個提示消息框,要求他們輸入一個號碼。在步驟「F」之後重複此步驟。 E.保存一個名爲「breadChoice」的變量中給出的數字。

F.使用提示告訴用戶有哪些類型的餡料,給他們每個號碼,並要求他們選擇填充數字。 喜歡: 灌裝選擇是:1火腿,2爲火雞,3蛋色拉,4牛肉,和5花生醬 請選擇使用數字1爲你的三明治填充的類型5.

ģ 。保存在名爲「fillingChoice」的變量中給出的數字。

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 2012-02-09 22:04:18

+0

錯誤在於,當我輸入有效數字時,它有時會說填充選項未定義。我認爲問題是我的if,else語句。我想也許我應該刪除警報,結合前兩個ifs並添加文件寫入,如果它只輸出三明治順序,如果用戶輸入正確的數字。 – StephanieKay 2012-02-09 22:08:11

回答

2

的錯誤是,它有時說未定義爲餡的選擇,當我輸入一個有效的數字。

如果用戶propmted爲breadChoice時進入4將發生這種情況,因爲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 2012-02-09 22:19:06

+0

'breadArray [「廢話」]是'undefined',所以'if'條件是錯誤的,它會提示* Sorry ... *。這比數字比較好得多。如果有人進入'2.5'? – Dennis 2012-02-09 22:20:48

+0

好的,謝謝!對不起,我是這個品牌的新手。 – StephanieKay 2012-02-09 22:22:31

2

陣列在Javascript中(就像很多,但不是所有的編程語言)開始在索引0,而不是1

+0

正確,但第二個數組是正常的。我知道索引編制從零開始,但是當用戶對白麪包說1時,應該知道使用0作爲數組,並且作爲回報,輸出第一個索引(零) – StephanieKay 2012-02-09 22:06:18

+1

因此,使用'breadChoice = Number(... ) - 1;'或'breadArray [breadChoice - 1]'。 – Dennis 2012-02-09 22:07:42

+0

或者,提示用戶'「0代表白色,1代表小麥......」。當你問索引1時,Javascript不可能「知道」你確實需要索引0。 – 2012-02-09 22:09:19

2
編號的第一個元素

數組從0開始,而不是1.因此,如果我爲白麪包輸入1,則需要從中減去1以獲得陣列中的正確位置:

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