HTML和Javascript中的Caesar密码网站不生成输出

时间:2017-11-12 15:52:18

标签: javascript html5 cryptography caesar-cipher

我正在制作一个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>

这是网站:

enter image description here 但是,当&#34; Caesar Cipher&#34;时,第二个文本框中没有任何内容显示。 点击。

我是Javascript和HTML的新手,所以请指出尽可能多的错误。

编辑1:输出现在出现在第二个text area。但是,我无法将x的值更改为ciphertext。它打印出相同的值。请参见此处的图片:enter image description here

而不是第二个textarea中的极客,应该是&#34; iggm&#34;。 请帮忙。

1 个答案:

答案 0 :(得分: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/