2017-01-22 3 views
0

Я делаю блокировку цифрового хранилища с javascript, где пользователи должны заполнить четыре числа в правильном порядке, чтобы разблокировать что-то на странице.Как проверить ряд чисел в javascript

Страница состоит из текстового поля, в котором они заполняют число до 10 и нажимают кнопку для отправки номера. Они должны делать это 4 раза, и если числа и порядок верны (например, 4 5 2 7), он будет разблокирован и будет отображаться изображение.

Я попытался заставить его работать с структурой «if», но, похоже, кажется, что он правильно подходит для этого.

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; 
     } 
} 
+1

Когда 'если (numberpushed == 4) {если (numberpushed == 5) {...}}' когда-нибудь передать? –

+0

вы, вероятно, не хотите делать это с утверждениями if. Подумайте о цикле for – Isaac

+0

'numberpushed' является морфий ... –

ответ

0

Если у вас есть что-то вроде этого (основано в описании):

<input type="number" id="digit"><button onclick="checkingcombination();">OK</button> 

Вы могли бы сделать что-то вроде этого:

var digits=[]; 
function checkingcombination() { 
    var input=document.getElementById("digit"); 
    var digit=input.value; 

    //TODO validate digit 

    //store each digit in the array 
    digits.push(digit); 

    //once there are 4 digits stored, check if the code is valid 
    if(digits.length==4) { 
     var correctAnswer=[4,5,2,7]; 
     if(digits.join("")==correctAnswer.join("")) { 
      alert("lock unlocked, welcome"); 
      return; 
     } else { 
      alert("wrong combination"); 
     } 
     //clear digits to enter a new combination 
     digits=[];     
    } 

    //clear the textbox to enter the next digit 
    input.value=""; 
    input.focus(); 
} 
+0

Вы благодарны за спасение жизни, это было именно то, что мне нужно. Я делаю это с аппаратными средствами arduino и node.js, и у меня просто нет базовых навыков кодирования, чтобы придумать это. Но он работает благодаря вам, теперь я могу использовать свою руку и ультразвуковой датчик, чтобы разблокировать что-то в моем браузере. Это спасло меня бессонной ночью! Спасибо всем другим, но потому, что я делаю это с помощью ультразвукового датчика, большинство из этих способов не работают. –

0

Попробуйте это:

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; 
    } 
    } 
} 
0

Если вы хотите использовать, если заявления вам необходимо будет иметь вашу функцию принимать какие-то аргументы. Вам нужно будет передать значения из входов на странице 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 вам нужно входы, эти селекторы запросов могут ссылаться на эти идентификаторы

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

Привет, вот мое решение.

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

Пример: http://codepen.io/xszaboj/pen/NdjLNo?editors=1010

Объяснение:

Вы принимать значения от входов и соответствие их Agains массив validaCombination. Если совпадают все значения, это правильная комбинация в противном случае это ошибка

советы

безопасности

Я надеюсь, что это просто интересный проект, а не что-то серьезное. Потому что каждый может прочитать вам комбинацию и проверить ваши «секретные номера».

0

Несмотря на массивный недостаток безопасности этого приложения, я предполагаю, что вы просто пытаетесь учиться, поэтому я проигнорирую это.

Когда вы запускаете оператор if, он проверяет правильность логики и запускает код внутри ТОЛЬКО, если это правда. Таким образом, остальные ваши утверждения if игнорируются.

Давайте подумаем о другом способе этого. Допустим, вы создали 2 массива. Первая - это фактическая комбинация, а другая - испытание. Только когда ваша пробная версия равна той же длине, что и правильная комбинация, тогда и только тогда она будет запускать функцию.

Когда функция запущена, она добавляет текущий текст ввода в пробный массив, сбрасывает текст в текстовое поле и затем проверяет длину пробной версии и сравнивает ее с комбо.

Необходимо нажимать кнопку 4 раза, и вы получите сообщение. Если это не то же самое, пробный массив очищается.

Это было бы подходящее время, чтобы открыть инструменты для разработчиков и посмотреть тип консоли на имя ваших переменных и посмотреть на них каждый раз, когда вы нажимаете.

HTML

<label for="combo_submit">Enter number:</label> 
<input type="text" id="combo_input"> 
<button type="button" id="combo_button">Click Me!</button> 

Javascript

<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> 
Смежные вопросы