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