2013-11-11 3 views
0

Я пытаюсь использовать тип ввода = «число» и swich вместе. Когда я пишу номер 2 (или какой-либо другой) в поле ввода и нажимаю кнопку, я надеюсь получить результат «что-то 2», но я получаю «неопределенный».html input type = "text" как случай для переключателя undefined

увидеть мой код HTML:

<body> 
<form> 
    <input type="number" id="entr"> 
    <input type="button" onclick="func()" value="go"> 
</form> 
<p5 id="demo"></p5> 

и ЯШ:

function func() { 
var x; 
var a = document.getElementById("entr").value; 
switch (a) { 
    case 0: 
       x = "something 0";   
     break; 
    case 1: 
       x = "something 1";   
     break; 
    case 2: 
       x = "something 2";   
     break; 
    case 3: 
       x = "something 3";   
     break; 

} 
document.getElementById("demo").innerHTML = x; 

}

Когда я использую по умолчанию в коммутаторе его выполнить этот блок кода, но никогда не один из другого кода. спасибо за ответ

ответ

2

В то время как ваш тип вход "номер", то Javascript еще рассматривает его как строку по умолчанию. (Обратите внимание, что вы свободны ввести произвольный текст в поле ввода.) У вас есть два варианта: вы можете переключиться на значении строки ...

switch (a) { 
     case "0": 
       x = "something 0"; 
      break; 
     case "1": 
       x = "something 1"; 
      break; 
     case "2": 
       x = "something 2"; 
      break; 
     case "3": 
       x = "something 3"; 
      break; 

    } 

Это работает, но было бы лучше разбор входной строки как номер ...

var a = parseInt(document.getElementById("entr").value); 

унарный оператор + может работать так же хорошо, но менее надежны, чем функции parseInt ...

var a = +document.getElementById("entr").value; 
1

изменения

var a = document.getElementById("entr").value; 

к

var a = parseInt(document.getElementById("entr").value, 10); 
Смежные вопросы