JavaScript中的Caesar密码返回意外结果

JavaScript中的Caesar密码返回意外结果,javascript,html,function,encode,Javascript,Html,Function,Encode,我正在创建一个网页来计算一个简单的Caesar密码,而不使用jquery。我找不到错误,也不确定如何将新字符串返回到文本区域 HTML: javascript: function caesarEncipher(shift, plaintext) { this.shift = shift; this.plaintext = plaintext; var ciphertext for (var i = 0; i < plaintext.length; i++) {

我正在创建一个网页来计算一个简单的Caesar密码,而不使用jquery。我找不到错误,也不确定如何将新字符串返回到文本区域

HTML:


javascript:

function caesarEncipher(shift, plaintext) {
  this.shift = shift;
  this.plaintext = plaintext;
  var ciphertext

  for (var i = 0; i < plaintext.length; i++) {
    // ASCII value - get numerical representation
    // 65 = 'A' 90 = 'Z'
    var encode = plaintext.charCodeAt(i);
    if (encode >= 65 && encode <= 90)
      // Uppercase
      ciphertext += String.fromCharCode((encode - 65 + shift) % 26 + 65);
      // 97 = 'a' 122 = 'z'
    else if (encode >= 97 && encode <= 122)
      // Lowercase
      ciphertext += String.fromCharCode((encode - 97 + shift) % 26 + 97);
    else
      ciphertext += input.charAt(i);
  }
  return document.getElementById = ciphertext; <-- Not sure about this
}
函数加密(移位,明文){
this.shift=shift;
this.plaintext=纯文本;
var密文
for(var i=0;i=65&&encode=97&&encode

函数加密(id,shiftId)
{
var t=document.getElementById(id),out='';
var shift=parseInt(document.getElementById(shiftId.value));
var txt=t.value,范围=[[65,90],[97122];
对于(变量i=0;i如果(code>=ranges[j][0]&&code为什么需要
这个。
这里?我不需要这个,但我仍然习惯于上一个java编程类。两件事:你能更明确地说明发生了什么,以及实际问题是什么(如预期行为与意外行为、实际错误消息等)第二,我这一次是为你做的,请在发帖时正确地格式化你的代码。如果你想得到别人的帮助,请记住,使你的代码看起来漂亮整洁(适当的缩进,等等)显著改善了这种体验。什么都没有发生,我尝试过的一切都没有报告错误,因此我找不到我的错误。如果我的纯文本Hello的移位为3,则输出应该是“ebil”"在textarea中。第一个循环将使用字母的ASCII或数字值来迭代明文的长度。第一个if表示大写,第二个表示小写,然后表示所有其他字符。密文将是新字符串,并将其传递回textarea。不会返回任何内容。设置
shift=-3
,您将t您的“EBIL”正移沿字母表移动,负移沿相反方向移动。
return document.getElementById=ciphertext;
这是错误的,不需要返回代码并进行解释很少有帮助。@FelixKling这是与TS相同的代码,只是以稍微不同的方式编写。他会看到问题a中的差异雷亚斯。
function caesarEncipher(shift, plaintext) {
  this.shift = shift;
  this.plaintext = plaintext;
  var ciphertext

  for (var i = 0; i < plaintext.length; i++) {
    // ASCII value - get numerical representation
    // 65 = 'A' 90 = 'Z'
    var encode = plaintext.charCodeAt(i);
    if (encode >= 65 && encode <= 90)
      // Uppercase
      ciphertext += String.fromCharCode((encode - 65 + shift) % 26 + 65);
      // 97 = 'a' 122 = 'z'
    else if (encode >= 97 && encode <= 122)
      // Lowercase
      ciphertext += String.fromCharCode((encode - 97 + shift) % 26 + 97);
    else
      ciphertext += input.charAt(i);
  }
  return document.getElementById = ciphertext; <-- Not sure about this
}