Реализация алгоритма Луна в исходном коде - PullRequest
0 голосов
/ 29 сентября 2018

<!DOCTYPE html>
<html <head>
<meta charset="utf-8">
<title>Credit Card Number Validator</title>
<style>
  <!-- .title {
    font-family: "Trebuchet MS";
    font-size: 30px;
    font-style: oblique;
    color: #006600;
    text-align: center;
  }
  
  body {
    background-color: #FFFFE8;
    font-family: Arial, Helvetica, sans-serif;
  }
  
  table {
    margin: auto;
    width: 600px;
  }
  
  .right {
    text-align: right;
  }
  
  .center {
    text-align: center;
  }
  
  #id {
    width: 175px;
  }
  
  -->
</style>
</head>

<body>
  <p class="title">Validate a credit card number </p>
  <form name="form1" id="form1" method="post" action="">
    <table>
      <tr>
        <td width="219" class="right">Enter the credit card number:</td>
        <td width="168" class="center"><input name="textfield" type="text" id="card"></td>
        <td width="196" id="output">&nbsp;</td>
      </tr>
      <tr>
        <td height="30">&nbsp;</td>
        <td class="center"><input type="button" id="button" value="Test the Card Number!"></td>
        <td>&nbsp;</td>
      </tr>
    </table>
  </form>
  <script>
    document.getElementById("button").addEventListener('click', credit, false);

    function credit() {
      data = document.getElementById("card").value;
      if (data) {
        cardnum = data.replace(/[^0-9]/, "");
      } else {
        alert('Please enter a number to test.');
      }
      if (cardnum.length == 16 && cardnum.charAt(0) == "5" && cardnum.charAt(1) != "0" && cardnum.charAt(12) == "7") {
        donecard = +cardnum.substr(0, 3) + " ";
        document.getElementById("card").innerHTML = donecard;
        document.getElementById("output").innerHTML = "valid";
      } else {
        document.getElementById("output").innerHTML = "invalid";
      }
    }
  </script>
</body>

</html>

Я пытаюсь реализовать алгоритм Луна в своем коде, чтобы он работал вместе.Мой первый блок работает хорошо, он корректно проверяет числа на основе кода.Этот блок работает правильно.Я хочу реализовать вторую часть, которая является алгоритмом Луна с циклом или циклами.Что было бы лучшим способом сделать это.

1 Ответ

0 голосов
/ 29 сентября 2018

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

let sum = 0;
let len = cardnum.length;
for(let i=0; i = len; i++) { 
    let foo = cardnum.charAt(len-i) 
    if(i % 2 ) {
        foo = foo * 2;
        foo = (foo) > 9) ? foo-9 : foo;
        sum = sum + foo;
    } else {
        sum = sum + foo
}
if( (sum * 9) % 10 === 0) {
    console.log(‘valid’)
}
...