我正在尝试使用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;
}
当我在交换机中使用默认值时,它会执行该代码块,但绝不会使用其中一个代码块。 谢谢你的回答
答案 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);