Сайт Цезаря зашифрованный в HTML и Javascript не производит вывод

1

Я делаю веб-сайт в HTML5 и Javascript, который принимает некоторый текст в textarea, применяет цезарный шифр 3 и отправляет вывод в другое textarea.

Однако он не производит никакого вывода. Вот мой код:

    <!DOCTYPE html>
    <html>
    <body>
    <script language="JavaScript">
    var x = document.getElementById("myTextArea").value;

    function c_ciph(){
      for (var i = 0, len = x.length; i < len; i++) {
        if (x[i] == x[i].toUpperCase()){
          var a = x[i].charCodeAt(0);
          var e = ((a - 65 + 3) % 26) + 97;
          var c = String.fromCharCode(e);
        }
        else if (x[i] == x[i].toLowerCase()){
          var a = x[i].charCodeAt(0);
          var e = ((a - 97 + 3) % 26) + 97;
          var c = String.fromCharCode(e);
        }
      }
      document.getElementById('result').value = x;
    }


    </script>
    <div>
      <h1>Cipher and Leetspeak Converter</h1>
      <p>Welcome to the cipher and leetspeak converter.</p>
    </div>

    <div>
      <textarea id = "myTextArea" rows = "6" cols = "80">
      </textarea>
      <p>Convert to:</p>
    </div>

    <div>
    <form>
      <input type="radio" name="codingStyle" value="caesar_cipher" onclick="c_ciph();"> Caesar Cipher <br>
      <input type="radio" name="codingStyle" value="vigenere_cipher"> Vigenere Cipher<br>
      <input type="radio" name="codingStyle" value="leetspeak"> Leetspeak
    </form>
    </div>

    <div>
      <button type="button">Convert</button>
    </div>

    <div>
      <textarea id = "result" rows = "6" cols = "80">
      </textarea>
    </div>

    </body>
    </html>

Это сайт:

введите описание изображения. Однако во втором текстовом поле ничего не отображается, когда нажимается "Цезарный шифр".

Я новичок в Javascript и HTML, поэтому, пожалуйста, укажите как можно больше ошибок.

РЕДАКТИРОВАТЬ 1: вывод теперь появляется во второй text area. Однако мне трудно изменить значение x в ciphertext. Он печатает одно и то же значение. Смотрите изображение здесь: Изображение 174551

Вместо geek во втором textarea должно быть "iggm". Пожалуйста помоги.

  • 0
    Браузер уже сообщает вам об ошибках в консоли разработчика.
  • 0
    @pointy Какие ошибки?
Теги:
cryptography
caesar-cipher

1 ответ

1
Лучший ответ

Вам нужно переместить

 var x = document.getElementById("myTextArea").value;

внутри функции, так что каждой функции времени называется x присваивается новое значение.

function c_ciph(){
        var x = document.getElementById("myTextArea").value;

  for (var i = 0, len = x.length; i < len; i++) {
    if (x[i] == x[i].toUpperCase()){
      var a = x[i].charCodeAt(0);
      var e = ((a - 65 + 3) % 26) + 97;
      var c = String.fromCharCode(e);
    }
    else if (x[i] == x[i].toLowerCase()){
      var a = x[i].charCodeAt(0);
      var e = ((a - 97 + 3) % 26) + 97;
      var c = String.fromCharCode(e);
    }
  }
  document.getElementById('result').value = x;
}

Рабочий пример здесь https://jsfiddle.net/vqsnmamy/2/

  • 0
    Большое спасибо. Однако теперь он печатает то же самое, а не зашифрованный текст. Я знаю, что алгоритм шифрования правильный, нет необходимости это исправлять, но есть проблема со значением x . Вы можете помочь мне с этим?
  • 0
    Вы не сохраняете свой результат, а печатаете «x» только на выходе. Может быть, это то, что вы ищете: https://jsfiddle.net/vqsnmamy/3/
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню