Why it doesn't work?

作業のメモ、記録をブログに残しています。

JavaScript アルファベットと数字をn文字ずらした文字列を得る(シーザー暗号)

Pythonで簡易なシーザー暗号を作成してみましたが、今回はJavascriptで作成してみました。


Input string:


入力ボックスに文字列を入力して、"Generate"ボタンを押下すると、ずらした文字列がポップアップで表示されます。
"ずらし"の対象は、アルファベットの大文字、小文字、そして0-9までの数字です。それ以外の文字については、無視してそのまま表示されます。
ずらす値は、現在”-1”で固定していますが、そのうちこれも入力ボックスで変更可能にしたいと考えてます。一応、プラスもマイナスも対応可能になっていますが、あまり詳細なテストを行っていないので、間違っていたら指摘して下さい。

<form name="in">
  Input string: <input type="text" name="input_box" value="" />
  <input type="button" value="Generate" onclick="startCalculate()" />
</form>
<script type="text/javascript">
 function caesarShift(str, shift){
   // Output value
   var output = '';
   if(str == null || str == ""){
     return "Input string is empyt or something wrong!"
   }
  // Go through each character in this loops
  for (var i = 0; i < str.length; i ++) {
    // Get the character
    var c = str[i];
    // If the character is a letter...
    if (c.match(/[a-z]/i)) {
      var code = str.charCodeAt(i);
      // A to Z
      if ((code >= 65) && (code <= 90)){
        var t = code - 65 + shift
        if (t < 0){
          t = 26 - Math.abs(t)%26
        }
        c = String.fromCharCode((t % 26) + 65);
      }
     // a to z
      else if ((code >= 97) && (code <= 122)){
        var t = code - 97 + shift
        if (t < 0){
          t = 26 - Math.abs(t)%26
        }
        c = String.fromCharCode((t % 26) + 97);
      }
    }
    // 0 - 9
    else if (c.match(/[0-9]/)) {
        var code = str.charCodeAt(i);
        var t = code - 48 + shift
        if (t < 0){
          t = 10 - Math.abs(t)%10
        }
        c = String.fromCharCode((t % 10) + 48);
    }
    // Append
    output += c;
  }
  // Return the output value!
  return output;
}
function startCalculate(){
  var str = caesarShift(document.in.input_box.value, -1)
  alert(str);
}
</script>

今日はここまで。