2012-08-01 98 views
1

我正在爲一個介紹性編程類的項目工作,所以我使用基本的JavaScript。這是我們的第一個功能項目,由於某種原因,我似乎無法使其工作。我在程序啓動之前調用了所有的變量並創建了函數,但由於某種原因它跳過了我的程序中的函數運行。任何幫助,將不勝感激。Javascript跳過功能

這只是我的程序的開始,我不想編寫代碼的其餘部分,直到我找出爲什麼這個部分被破壞,這就是爲什麼程序沒有做任何事情,但如果它沒有關閉窗口通過測試。

// 1 Declare Variables 
var numTrees; 
var counter = 0; 
var answer = "no"; 

function treeFunction(answer, counter, numTrees) { 
    while (answer == "no" && counter < 3) { 
     if (numTrees == 5, 10) { 
      answer = "yes"; 
     } else if (numTrees < 5 || numTrees > 10) { 
      alert("That is an incorrect value.\nThe sample size should be less than 5 or greater than 10.\nPlease try again."); 
      answer = "no"; 
      numTrees = prompt("Please reenter the amount of trees in your sample."); 
      counter + 1; 
     } 
    } 
    if (answer == "no") { 
     alert("You have entered an incorrect number too many times.\nThe Program will now end."); 
     window.open('', '_self', ''); 
     window.close(); 
    } else if (answer == "yes") { 
     return; 
    } 
} 
// 2 Prompt the Instructor for the number of Trees 
numTrees = prompt("How many trees are in your sample?"); 
alert("You have entered: " + numTrees); 
treeFunction(answer, counter, numTrees) 
document.write(numTrees); { 
    document.write("<br/> <br/>" + "End of Program."); 
} 
+0

我沒有運行的代碼,但我也注意到你失蹤後'treeFunction分號(答案,counter,numTrees)' – kei 2012-08-01 15:13:20

+6

'if(numTrees == 5,10)'是什麼意思? – 2012-08-01 15:14:02

+1

@kei:不會引起任何問題 – 2012-08-01 15:14:28

回答

0

你需要的是更多的東西是這樣的:

if (numTrees < 5 || numTrees > 10) { 
     alert("That is an incorrect value.\nThe sample size should be less than 5 or greater than 10.\nPlease try again."); 
     answer = "no"; 
     numTrees = prompt("Please reenter the amount of trees in your sample."); 
     counter + 1; 
    } else { 
     answer = "yes"; 
    } 
+0

我沒有想到這一點。這是完美的! – 2012-08-01 15:44:17

7

你有;

if(numTrees == 5, 10)​ 

的錯誤逗號導致該if評估truthy表達10所以它總是通過測試,以測試5,6,7,8,9或10;

if(numTrees >= 5 && numTrees <= 10) 
+0

對不起...當我做出更改時,它只是完全停止運行。現在它只顯示標題。 – 2012-08-01 15:41:51

1

if(numTrees == 5, 10)​沒有按不意味着If numtrees is equal to 5,6,7,8,9, or 10

改變它

if(numTrees >= 5 || numTrees <=10)​

+0

這很奇怪,因爲它與我用於上次作業的代碼相同。 – 2012-08-01 15:22:45

+0

它可能看起來有效。 – 2012-08-01 15:26:34

+0

我想這可以解釋爲什麼我的一些同學有這樣的構建工作,有些則沒有。 – 2012-08-01 15:28:45

2

您正在使用的方式這一行中的逗號有一個特別的意思荷蘭國際集團:

if(numTrees == 5, 10)​ 

本質上講這確實是返回轉換爲布爾值,這是不0時的10值(第二個操作數),所以它是真實的。

https://developer.mozilla.org/en/JavaScript/Reference/Operators/Comma_Operator

你可能想用的OR(||):

if(numTrees == 5 || numTrees == 10)​ 

或檢查numTrees針對範圍:

if(numTrees >= 5 || numTrees <= 10)​ 

在一個側面說明,在javascript建議您總是使用identity comparison===)而不是常規比較(==):

if(numTrees === 5 || numTrees === 10)​ 
1

如果(numTrees == 5,10){ 答案= 「是」; }

這是一個奇怪的構造,我從來沒有見過。我假設你相信它的意思是「範圍在5到10之間的numTrees?」,但事實並非如此。沒有檢查,我認爲這意味着你一次檢查兩件事:

  • 是numTrees等於5?
  • 是10? (這實際上意味着「是10不是0」,這當然總是如此)。

由於您檢查的第二個條件始終爲真,因此您始終將答案設置爲「是」。結果,你的循環總是運行一次 - 它啓動,檢查答案是「否」,將答案設置爲「是」,並立即停止循環。

你需要改變你的條件,如果(numTrees> = 5個& & numTrees < = 10)