我有这个HTML:
<input type="number" id="num">
<input type="submit" onclick="test()">
和这个脚本:
function test() {
var num = document.getElementById("num").value;
alert(num === 1);
那么当我输入1作为输入时,为什么会得到false
?
如果我尝试alert(num - 1 === 0);
而不是alert(num === 1);
,我会true
。为什么会这样?
答案 0 :(得分:4)
表单控件的值总是字符串(type="number"
只是要求浏览器强制该字符串包含数字)。您可以将其转换为+
,parseInt
或parseFloat
的数字。您还可以与"1"
进行比较,而不是1
。
如果subtract是字符串中的数字,JavaScript会在执行减法之前将字符串转换为数字,然后结果将计算为数字。
答案 1 :(得分:0)
考虑将其更改为字符串。
function test() {
var num = document.getElementById("num").value;
alert(num === "1");
===运算符要严格得多,并且要求比较值具有相等的值和类型。在这种情况下,您将字符串与数字进行比较。
答案 2 :(得分:0)
昆汀的回答是正确的,但只是为了补充:
您可以使用lazy equals检查它是否为1(即没有类型检查。)num == 1
或者,只需与字符串进行比较:num === "1"