2016-01-21 95 views
0

我正在js中處理條件語句。但是遇到了這個腳本的兩個問題。
1)無論用戶輸入,腳本都不會處理else子句。 2)我的alert方法首先打印alert(),然後是第二個未定義的alert()。 Idk爲什麼這樣。警報不處理用戶輸入

<script> 
function temperature (temp) 
{ 
var message=""; 
var temp = 70; 
if(temp <= 69) { 
    alert(message = "Turn on the heat."); 
} else { 
    alert(message = "It is hot enough."); 
      } 
}           
</script> 

然後我的身體腳本是:

<script> 
var myTemp=prompt("Please enter your current temperature."); //prompt is ok 
//alert fails to process else clause and then prints an undefined alert() 
alert(temperature(myTemp));  
</script>     

我試圖去除函數本身的警報。但是,這殺死了我的提示。

PS我使用Sublime 3和jshint,但是這個問題已經超出了jshint的管轄範圍,obv。

請指教,謝謝大家。

+0

'警報(消息= 「打開熱」)'我不知道你想在這裏做什麼。變量=值技術上是未定義的,這就是爲什麼你得到未定義的alert()。只需返回「開啓熱」和警報(溫度(myTemp));'應該顯示您的消息。或者,按照@rac的建議去做。 – neilsimp1

+0

,因爲你在函數'var temp = 70中執行這個操作;'你在溫度()函數中覆蓋了傳入的溫度 –

+0

,你只需要爲'message'和'return message'分配合適的值。 –

回答

0

您正在使用2個警報:一個在另一個內......並且還重置您的溫度值。

使用此:

function temperature (temp) 
{ 
    if(temp <= 69) { 
    return "Turn on the heat."; 
    } else { 
    return "It is hot enough."; 
    } 
} 
+0

因此,在邏輯上我不需要初始化將要由用戶輸入的變量,對嗎? – chignon

+0

是的,你沒有。儘管驗證用戶的輸入是一種很好的做法。因爲你不能總是期待好的投入。但你會隨着時間學習。現在很好去。 :) – Sachin

0

幾件事情:

1)要設置變量temp到70,所以它會覆蓋您的輸入。

2)prompt()函數返回一個字符串,然後將該字符串傳遞到溫度函數中,試圖將其與整數進行比較。使用parseInt()

3)由於您將temperature()置於警報中,並且您的temperature()函數本身也會創建警報,所以您也在嵌套警報。選擇一個或另一個。

這是我如何改變它。

<script> 
function temperature (temp){ 
    var message=""; 
    var temp = temp || 70; 
    if(temp <= 69) { 
     message = "Turn on the heat."); 
    } else { 
     message = "It is hot enough."); 
    } 
return message; 
}           
</script> 

然後:

... 
alert(temperature(parseInt(myTemp))); 
...