-2

When the for loop runs the first time everything works fine but the second time the loop runs it isn't working it says "NaN" and at the 3rd time the loop runs it allways write the number of the second loop! I don't know what to do!

function encrypt() {
  var zwischentext = document.querySelector("#text").value;
  var keys = document.querySelector("#key").value;
  var number1 = "";
  var number2 = "";
  var number3 = "";

  zwischentext = zwischentext.replace(new RegExp('a', 'g'), "01 ");
  zwischentext = zwischentext.replace(new RegExp('b', 'g'), "02 ");
  zwischentext = zwischentext.replace(new RegExp('c', 'g'), "03 ");
  zwischentext = zwischentext.replace(new RegExp('d', 'g'), "04 ");
  zwischentext = zwischentext.replace(new RegExp('e', 'g'), "05 ");
  zwischentext = zwischentext.replace(new RegExp('f', 'g'), "06 ");
  zwischentext = zwischentext.replace(new RegExp('g', 'g'), "07 ");
  zwischentext = zwischentext.replace(new RegExp('h', 'g'), "08 ");
  zwischentext = zwischentext.replace(new RegExp('i', 'g'), "09 ");
  zwischentext = zwischentext.replace(new RegExp('j', 'g'), "10 ");
  zwischentext = zwischentext.replace(new RegExp('k', 'g'), "11 ");
  zwischentext = zwischentext.replace(new RegExp('l', 'g'), "12 ");
  zwischentext = zwischentext.replace(new RegExp('m', 'g'), "13 ");
  zwischentext = zwischentext.replace(new RegExp('n', 'g'), "14 ");
  zwischentext = zwischentext.replace(new RegExp('o', 'g'), "15 ");
  zwischentext = zwischentext.replace(new RegExp('p', 'g'), "16 ");
  zwischentext = zwischentext.replace(new RegExp('q', 'g'), "17 ");
  zwischentext = zwischentext.replace(new RegExp('r', 'g'), "18 ");
  zwischentext = zwischentext.replace(new RegExp('s', 'g'), "19 ");
  zwischentext = zwischentext.replace(new RegExp('t', 'g'), "20 ");
  zwischentext = zwischentext.replace(new RegExp('u', 'g'), "21 ");
  zwischentext = zwischentext.replace(new RegExp('v', 'g'), "22 ");
  zwischentext = zwischentext.replace(new RegExp('w', 'g'), "23 ");
  zwischentext = zwischentext.replace(new RegExp('x', 'g'), "24 ");
  zwischentext = zwischentext.replace(new RegExp('y', 'g'), "25 ");
  zwischentext = zwischentext.replace(new RegExp('z', 'g'), "26 ");

  document.querySelector("#output").value = "";

  for (i = 0; i < zwischentext.length; i += 3) {
    number1 = "";
    number2 = "";
    number3 = "";
    number1 = zwischentext.substring(i, 2);
    number2 = keys.substring(i, 2);
    if (number1.substring(0, 1) == "0") {
      number1 = number1.replace("0", "");
    }
    number1 = parseInt(number1);
    if (number2.substring(0, 1) == "0") {
      number2 = number2.replace("0", "");
    }
    number2 = parseInt(number2);
    number3 = number1 + number2;
    console.log("\"" + number3 + "\"");
    document.querySelector("#output").value = (document.querySelector("#output").value + number3 + " ");
  }
}
<!DOCTYPE html>
<html>

<head>
  <title>Javascript</title>
  <script language="javascript" type="text/javascript" src="javascript.js"></script>
</head>

<body>
  <h1>En/Decrypter
    <h1>
      <p>
        <textarea style="resize:none" name="text" id="text" cols="50" rows="5"></textarea>
      </p>
      <p>
        <textarea style="resize:none" name="key" id="key" cols="50" rows="5"></textarea>
      </p>
      <p>
        <button onclick="encrypt()" type="button" name="verschlüsseln" id="encrypt">ENCTYPT</button>
        <button type="button" name="entschlüsseln" id="decrypt">DECRYPT</button>
      </p>
      <p>
        <textarea style="resize:none" name="output" id="output" cols="50" rows="5"></textarea>
      </p>
</body>

</html>
Erik Kalkoken
  • 30,467
  • 8
  • 79
  • 114
Javes
  • 3
  • 2

1 Answers1

1

You need to use .substr(), not .substring(). See What is the difference between substr and substring?

function encrypt() {
  var zwischentext = document.querySelector("#text").value;
  var keys = document.querySelector("#key").value;
  var number1 = "";
  var number2 = "";
  var number3 = "";

  zwischentext = zwischentext.replace(new RegExp('a', 'g'), "01 ");
  zwischentext = zwischentext.replace(new RegExp('b', 'g'), "02 ");
  zwischentext = zwischentext.replace(new RegExp('c', 'g'), "03 ");
  zwischentext = zwischentext.replace(new RegExp('d', 'g'), "04 ");
  zwischentext = zwischentext.replace(new RegExp('e', 'g'), "05 ");
  zwischentext = zwischentext.replace(new RegExp('f', 'g'), "06 ");
  zwischentext = zwischentext.replace(new RegExp('g', 'g'), "07 ");
  zwischentext = zwischentext.replace(new RegExp('h', 'g'), "08 ");
  zwischentext = zwischentext.replace(new RegExp('i', 'g'), "09 ");
  zwischentext = zwischentext.replace(new RegExp('j', 'g'), "10 ");
  zwischentext = zwischentext.replace(new RegExp('k', 'g'), "11 ");
  zwischentext = zwischentext.replace(new RegExp('l', 'g'), "12 ");
  zwischentext = zwischentext.replace(new RegExp('m', 'g'), "13 ");
  zwischentext = zwischentext.replace(new RegExp('n', 'g'), "14 ");
  zwischentext = zwischentext.replace(new RegExp('o', 'g'), "15 ");
  zwischentext = zwischentext.replace(new RegExp('p', 'g'), "16 ");
  zwischentext = zwischentext.replace(new RegExp('q', 'g'), "17 ");
  zwischentext = zwischentext.replace(new RegExp('r', 'g'), "18 ");
  zwischentext = zwischentext.replace(new RegExp('s', 'g'), "19 ");
  zwischentext = zwischentext.replace(new RegExp('t', 'g'), "20 ");
  zwischentext = zwischentext.replace(new RegExp('u', 'g'), "21 ");
  zwischentext = zwischentext.replace(new RegExp('v', 'g'), "22 ");
  zwischentext = zwischentext.replace(new RegExp('w', 'g'), "23 ");
  zwischentext = zwischentext.replace(new RegExp('x', 'g'), "24 ");
  zwischentext = zwischentext.replace(new RegExp('y', 'g'), "25 ");
  zwischentext = zwischentext.replace(new RegExp('z', 'g'), "26 ");
  console.log(zwischentext);
  document.querySelector("#output").value = "";

  for (i = 0; i < zwischentext.length; i += 3) {
    number1 = "";
    number2 = "";
    number3 = "";
    number1 = zwischentext.substr(i, 2);
    number2 = keys.substr(i, 2);
    console.log("n2 = ", number2);
    if (number1.substring(0, 1) == "0") {
      number1 = number1.replace("0", "");
    }
    number1 = parseInt(number1);
    if (number2.substring(0, 1) == "0") {
      number2 = number2.replace("0", "");
    }
    number2 = parseInt(number2);
    number3 = number1 + number2;
    console.log('"' + number3 + '"');
    document.querySelector("#output").value = (document.querySelector("#output").value + number3 + " ");
  }
}
<!DOCTYPE html>
<html>

<head>
  <title>Javascript</title>
  <script language="javascript" type="text/javascript" src="javascript.js"></script>
</head>

<body>
  <h1>En/Decrypter
    <h1>
      <p>
        <textarea style="resize:none" name="text" id="text" cols="50" rows="5"></textarea>
      </p>
      <p>
        <textarea style="resize:none" name="key" id="key" cols="50" rows="5"></textarea>
      </p>
      <p>
        <button onclick="encrypt()" type="button" name="verschlüsseln" id="encrypt">ENCTYPT</button>
        <button type="button" name="entschlüsseln" id="decrypt">DECRYPT</button>
      </p>
      <p>
        <textarea style="resize:none" name="output" id="output" cols="50" rows="5"></textarea>
      </p>
</body>

</html>
Barmar
  • 741,623
  • 53
  • 500
  • 612