2016-04-09 12 views
3

Ich habe das folgende Problem zu lösen.

Problem 5. Stelle als WortJavaScript Switch-Anweisung schlägt fehl, Fall

einen Skript schreiben, das für eine Ziffer (0-9) fragt, und am Eingang abhängig, zeigt die Ziffer als Wort (in englischer Sprache). "Keine Ziffer" bei ungültiger Eingabe drucken. Verwenden Sie eine switch-Anweisung. Beispiele:

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 

=

Hier ist mein JavaScript und HTML HTML:

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

Mein 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; 
     } 

    }); 

}); 

Das Problem ist, dass wenn ich eine Zahl von 0-9 zeigt die Standardanweisung.

+1

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

Antwort

7

Die value ist im String-Format. Rechnen Sie es an die Nummer, weil switch Aussagen nicht Typen coerce (im Gegensatz zu if Aussagen)

switch(+input.value) { 

ODER

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

Ich werde auch vorschlagen, Array oder ein Objekt zu verwenden.

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

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

Does input.value ist immer ein Schnur? –

+1

ja, es ist, was Sie in ein Textfeld eintippen –

+0

Also, wenn ich auf "nummer" id = "inpuText">, dann meine Switch-Anweisung funktioniert, ohne es in eine Zahl zu analysieren? –