【问题标题】:If/Else and typeof problemsIf/Else 和 typeof 问题
【发布时间】:2014-09-05 22:25:36
【问题描述】:

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

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

JS -> 问题出在哪里!

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!");
    }
}

【问题讨论】:

  • 从元素中获取的所有值都是字符串类型。您可能想检查 isNaN 是否并采取相应措施

标签: javascript html if-statement input typeof


【解决方案1】:
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!
}

【讨论】:

  • 虽然您的答案的第一部分是正确的,但仅检查 isNaN 是不够的。有关 javascript 中数字测试的更多信息,请参见此处:stackoverflow.com/questions/18082/…
  • 它工作得很好,它的问题是:它不会 alert(),如果它不是数字(一旦你按下按钮)。顺便说一句,这仍然非常有用,谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-17
  • 2021-11-20
  • 1970-01-01
  • 2019-03-18
  • 2011-04-14
  • 2021-05-15
相关资源
最近更新 更多