如何在javascript中检查一系列数字

如何在javascript中检查一系列数字,javascript,Javascript,我正在用javascript制作一个数字保险库锁,用户需要以正确的顺序填写四个数字才能解锁页面上的某些内容 该页面由一个文本框组成,他们在其中填写10以下的数字,然后按下按钮发送该数字。他们必须这样做4次,如果数字和顺序正确(例如4 5 2 7),它将解锁并显示一张图片 我试图用“如果”结构使它工作,但似乎想不出正确的方法 function checkingcombination (){ if(numberpushed == 4){ if(numberpushed =

我正在用javascript制作一个数字保险库锁,用户需要以正确的顺序填写四个数字才能解锁页面上的某些内容

该页面由一个文本框组成,他们在其中填写10以下的数字,然后按下按钮发送该数字。他们必须这样做4次,如果数字和顺序正确(例如4 5 2 7),它将解锁并显示一张图片

我试图用“如果”结构使它工作,但似乎想不出正确的方法

function checkingcombination (){
      if(numberpushed == 4){
        if(numberpushed == 5){
          if(numberpushed == 2){
            if(numberpushed == 7){
               alert("lock unlocked, welcome");
            }
            else{
             alert("wrong combination");
             return;
            } 
          }
          else{
           alert("wrong combination");
           return;
          }
        }
        else{
          alert("wrong combination");
          return;
        }
      }
      else{
        alert("wrong combination");
        return;
      }
}
试试这个:

function checkingcombination (array){
  var rightCombo = [4,5,2,7];

  for(i = 0; i<userCombo.length; i=++){
    if(userCombo[i] !== rightCombo){
        alert('"' + userCombo[i] + '" is wrong number!');
        return false;
    } else {
        alert('Right combo!');
        return true;
    }
  }
}
函数检查组合(数组){
var rightCombo=[4,5,2,7];

for(i=0;i如果你想使用If语句,你需要让你的函数接受一些参数。你需要将HTML页面上输入的值传递给函数。类似这样的事情

function checkingcombination (firstNumber, secondNumber, thirdNumber, fourthNumber) {
  if(firstNumber == 4){
    if(secondNumber == 5){
      if(thirdNumber == 2){
        if(fourthNumber == 7){
           alert("lock unlocked, welcome");
        }
       ...


var firstNumber = document.getElementById('firstNumber').value;
var secondNumber = document.getElementById('secondNumber').value;
var thirdNumber = document.getElementById('thirdNumber').value;
var fourthNumber = document.getElementById('fourthNumber').value;


function validate() {
  checkingcombination(firstNumber, secondNumber, thirdNumber, fourthNumber)

}
在html中,您将需要这些查询选择器可以通过这些ID引用的输入

<input id="firstNumber" type="number">
<input id="secondNumber" type="number">
<input id="thirdNumber" type="number">
<input id="fourthNumber" type="number" onkeyup="validate()">

如果您有类似的内容(根据您的描述):


嗨,这是我的解决方案

<input type="number" min="0" max="9" class="vault-value" />
<input type="number" min="0" max="9" class="vault-value"/>
<input type="number" min="0" max="9" class="vault-value"/>
<input type="number" min="0" max="9" class="vault-value"/>
<button onclick="validateLock()">VALIDATE</button>

<div>
  <label>Result: </label>
  <div id="result"></div>
</div>

验证
结果:
javascript:

var validaCombination = [1,2,3,5];
function validateLock(){
  var vaultElements = document.getElementsByClassName("vault-value");
  var valid = true;
  for(var i =0; i< vaultElements.length; i++){
    var vaultElement = vaultElements[i];
    var combinationValue = validaCombination[i];
    if(combinationValue !== parseInt(vaultElement.value)){
      valid = false;
    }
  }
  valid ? showSuccess() : showError();
}

function showError(){
  var resElement = document.getElementById("result");
  resElement.innerHTML = "Error!";
}

function showSuccess(){
  var resElement = document.getElementById("result");
  resElement.innerHTML = "Success!";
}
var-validaCombination=[1,2,3,5];
函数validateLock(){
var vaultElements=document.getElementsByClassName(“保险库值”);
var valid=true;
对于(var i=0;i
例如:

说明:

您从输入中获取值,并在validaCombination数组中对其进行匹配。如果所有值都匹配,则为正确的组合,否则为错误

安全建议


我希望这只是一个有趣的项目,而不是什么严肃的事情。因为每个人都可以阅读你的组合并检查你的“秘密号码”。尽管这个应用程序存在巨大的安全漏洞,我假设你只是在尝试学习,所以我将忽略这一点

当你运行一个if语句时,它会检查逻辑是否为真,并且只在它为真时才运行里面的代码

让我们考虑另一种方法。假设您创建了两个数组。一个是实际组合,另一个是试用。只有当您的试用与正确组合的长度相同时,它才会运行函数

当函数运行时,它会将当前输入文本附加到试用数组中,重置文本框中的文本,然后检查试用的长度并将其与combo进行比较

您必须单击该按钮4次,您将收到一条消息。如果消息不同,试用阵列将被清除

这将是打开开发人员工具并查看控制台中的类型、变量名称以及每次单击时查看它们的好时机

HTML
输入数字:
点击我!
Javascript

var input=document.getElementById(“组合输入”);
var button=document.getElementById(“组合按钮”);
var组合=[1,2,3,4];
var试验=[];
按钮。addEventListener(“单击”,复选框编号);
函数checkComboNumber(){
变量编号=编号(输入值);
试推(数字)
input.value=“”;
input.focus();
if(trial.length==combo.length){
如果(组合===试验){
msg=“嗯……我印象深刻”;
}否则{
msg=“别再猜了!”;
试验=[];
}
警报(msg);
控制台日志(msg);
}
}

if(numberpushed==4){if(numberpushed==5){…}
是否通过?您可能不想使用if语句。想想for循环
numberpushed
正在变形……从我可以告诉您的情况来看,您是作为一个通常使用支持同步IO的编程语言的人来看待这个问题的。在JavaScript中,您不能像需要使用的方式那样等待下一次按键完成这项工作。您需要存储一个状态(例如,已发送的数字计数)我希望这只是为了好玩,而不是什么重要的事情,因为他们可以查看源代码来查看代码。你是救命恩人,谢谢,这正是我所需要的。我用arduino硬件和node.js来做这件事,我只是不具备基本的编码技能。但这一切都要感谢你,我是ca现在用我的手和超声波传感器在我的浏览器中解锁一些东西。这让我度过了一个不眠之夜!也要感谢所有其他人,但因为我用超声波传感器来解锁,大多数方法都不起作用。
<input type="number" min="0" max="9" class="vault-value" />
<input type="number" min="0" max="9" class="vault-value"/>
<input type="number" min="0" max="9" class="vault-value"/>
<input type="number" min="0" max="9" class="vault-value"/>
<button onclick="validateLock()">VALIDATE</button>

<div>
  <label>Result: </label>
  <div id="result"></div>
</div>
var validaCombination = [1,2,3,5];
function validateLock(){
  var vaultElements = document.getElementsByClassName("vault-value");
  var valid = true;
  for(var i =0; i< vaultElements.length; i++){
    var vaultElement = vaultElements[i];
    var combinationValue = validaCombination[i];
    if(combinationValue !== parseInt(vaultElement.value)){
      valid = false;
    }
  }
  valid ? showSuccess() : showError();
}

function showError(){
  var resElement = document.getElementById("result");
  resElement.innerHTML = "Error!";
}

function showSuccess(){
  var resElement = document.getElementById("result");
  resElement.innerHTML = "Success!";
}
<label for="combo_submit">Enter number:</label>
<input type="text" id="combo_input">
<button type="button" id="combo_button">Click Me!</button>
<script>
    var input = document.getElementById("combo_input");
    var button = document.getElementById("combo_button");

    var combo = [1,2,3,4];
    var trial = [];

    button.addEventListener("click", checkComboNumber);

    function checkComboNumber() {

        var number = Number(input.value);

        trial.push(number)

        input.value = "";
        input.focus();

        if (trial.length === combo.length) {
            if (combo === trial) {
                msg = "Well... im impressed";
            } else {
                msg = "Stop trying to guess!";
                trial = [];
            }
            alert(msg);
            console.log(msg);
        }
    }


</script>