首页 > 解决方案 > 如何检查输入是否只包含0和1?

问题描述

我正在尝试制作二进制到十进制的转换器。

我想将输入减少到 8 位,并且只允许使用 JavaScript 函数的 0 和 1。

第一个测试有效,但我还没有成功检测到除了 0 和 1 以外的其他字符的输入。我怎样才能做到这一点?

这是我迄今为止尝试过的:

function bin2dec() {
  var bin = document.getElementById("input").value;
  if (bin.length > 8) {
    document.getElementById("alert").innerHTML = "8 digits";
  } else if (bin > 2) {
    document.getElementById("alert").innerHTML = "Enter binary value";
  } else {
    document.getElementById("output").innerHTML = parseInt(bin, 2);
  }
}

标签: javascript

解决方案


bin > 2仅检查输入是否为十进制数以及是否小于 2。我认为这不是您想要的。尝试这样的事情:

function bin2dec() {
  var bin = document.getElementById("input").value,
      num;
  if (bin.length > 8) {
    document.getElementById("alert").innerHTML = "8 digits";
  } else if (isNaN(num = parseInt(bin, 2))) {
    document.getElementById("alert").innerHTML = "Enter binary value";
  } else {
    document.getElementById("output").innerHTML = num;
  }
}

解释:isNaN(num = parseInt(bin, 2))将解析后的值赋给num,如果它是无效的 ( NaN),则表示"Enter binary value",否则继续该else语句。


推荐阅读