如果/ Else和typeof问题

时间:2014-09-05 22:25:36

标签: javascript html if-statement input typeof

问题是,我不知道为什么这段代码不起作用。我到处搜索!
此代码的作用是从数字框中获取信息,然后在用户输入文本(错误)时显示消息,并在用户输入数字时显示成功消息。
HTML - >

<input type="number" id="number">
<button onclick="makeTrack()">Make Track</button>
<div><div>

JS - &gt;问题出在哪里!

function makeTrack() {
    var e = document.getElementById("number").value;
    if(typeof e === "number";) {
        alert("It works!");
    } else if(typeof e === "string") {
        alert("Please input a number!");
    }
}

1 个答案:

答案 0 :(得分:4)

document.getElementById("number").value

所有元素的value将始终为字符串; JS并没有试图超越你,猜测它是否是一个数字(这将是灾难性的!)。首先尝试解析它,如下所示:

function makeTrack() {
    var e = parseInt(document.getElementById("number").value, 10);
    if(!isNaN(e)) {
        alert("It works!");
    } else {
        alert("Please input a number!");
    }
}

请注意,这会将"12345 this is a string"的输入解释为12345。如果这是不合需要的,请尝试以下方法:

var e = document.getElementById("number").value;
if (/^[0-9]+$/.test(e)) {
    // good
    e = parseInt(e, 10); // make sure to still convert it to a number!
}