2016-04-09 99 views
3

我有以下問題需要解決。

問題5.如數字字JavaScript switch語句無法匹配case

編寫一個腳本,要求一個數字(0-9),並根據輸入,顯示數字爲(英文)一詞。 輸入無效時打印「不是數字」。 使用switch語句。 例子:

digit result 
2  two 
1  one 
0  zero 
5  five 
-0.1 not a digit 
hi  not a digit 
9  nine 
10  not a digit 

=

這裏是我的JavaScript和HTML HTML:

<input type="text" id="textInput"> 
<button id="react">Check</button> 
<p id="result"></p> 

我的javascript:

document.addEventListener("DOMContentLoaded",function(){ 

    var input = document.getElementById('textInput'); 
    var button = document.getElementById('react'); 
    var result = document.getElementById('result'); 


    button.addEventListener('click',function(){ 

     switch (input.value) { 
      case 0: 
       result.innerHTML = 'zero'; 
       break; 
      case 1: 
       result.innerHTML = 'one'; 
       break; 
      case 2: 
       result.innerHTML = 'two'; 
       break; 
      case 3: 
       result.innerHTML = 'three'; 
       break; 
      case 4: 
       result.innerHTML = 'four'; 
       break; 
      case 5: 
       result.innerHTML = 'five'; 
       break; 
      case 6: 
       result.innerHTML = 'Six'; 
       break; 
      case 7: 
       result.innerHTML = 'Seven'; 
       break; 
      case 8: 
       result.innerHTML = 'Eight'; 
       break; 
      case 9: 
       result.innerHTML = 'Nine'; 
       break; 
      default: 
       result.innerHTML = 'not a digit'; 
       break; 
     } 

    }); 

}); 

的問題是,當我輸入從數0-9它顯示了默認語句。

+1

見http://stackoverflow.com/questions/6989902/is-it-safe-to-assume-strict-comparison-in-a-javascript-switch-statement –

回答

7

value是字符串格式。將其轉換爲數字,因爲switch語句不強制類型(不像if語句)

switch(+input.value) { 

OR

switch(parseInt(input.value, 10)) { 

,我也會推薦使用數組或對象。

var arr = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']; 

result.innerHTML = arr[+input.value] || 'Not a Digit'; 
+0

是否input.value始終是一個串? –

+1

是的,這是你輸入到文本框 –

+0

因此,如果我設置爲,那麼我的switch語句將無需將其解析爲數字? –