html输入类型=“text”作为switch的大小写是未定义的

时间:2013-11-11 22:40:28

标签: javascript input switch-statement

我正在尝试使用input type =“number”和swich。当我在输入字段中写入数字2(或其他一些)并按下按钮时,我希望输出“某事2”,但我得到“未定义”。

请参阅我的html代码:

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

和js:

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 个答案:

答案 0 :(得分: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 :(得分:1)

变化

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

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