2016-04-09 28 views
3

eşleşmesi için başarısız oldu.

JavaScript anahtarı bildirimi,

bir rakam (0-9) sorar bir komut dosyası yazın kelime olarak

Sorun 5. Rakam ve girişe bağlı olarak, (İngilizce) kelime olarak rakamı gösterir. Geçersiz giriş durumunda “bir basamak değil” yazdırın. Bir anahtar ifadesi kullanın. Örnekler:

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

JavaScript'im:

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 

=

İşte benim JavaScript ve HTML HTML var

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

    }); 

}); 

sorun olduğunu ben bir numarayı yazdığınızda 0-9 varsayılan ifadeyi gösterir.

+1

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

cevap

7

value, dize biçimindedir. switch ifadeleri (if tabloların aksine) türlerini zorlamak yok çünkü

switch(+input.value) { 

VEYA


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

Ben de diziyi veya nesneyi kullanmak öneride bulunuruz numara dönüştürün.

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

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

input.value her zaman olduğu mu dize? –

+1

evet, bir metin kutusuna yazdığınız şey budur –

+0

Yani olarak ayarlıysam, anahtar ifadem onu ​​bir sayıya bölmek zorunda kalmadan çalışır? –