caesar密码移位javascript存在问题

caesar密码移位javascript存在问题,javascript,jquery,html,string,encryption,Javascript,Jquery,Html,String,Encryption,对于一个学校项目,我正在尝试创建一个关于加密方法的网站,但现在我的Caesar网站有一个问题。我检查了很多次,但我无法找出代码中的问题所在。我认为这种转变是错误的,但我不知道我能做些什么来让它起作用,如果有人能帮助我,我会非常高兴 下面是html部分: <form name="formu" action=""> <label for="pseudo">Your text :</label> <br> <textarea name="text"

对于一个学校项目,我正在尝试创建一个关于加密方法的网站,但现在我的Caesar网站有一个问题。我检查了很多次,但我无法找出代码中的问题所在。我认为这种转变是错误的,但我不知道我能做些什么来让它起作用,如果有人能帮助我,我会非常高兴

下面是html部分:

<form name="formu" action="">
<label for="pseudo">Your text :</label>
<br>
<textarea name="text" id="text_encode" style="width: 30%;height: 200px"> 
</textarea>
<br>
<br>

<label for="methods">Select your methods : </label>
<br>
<br>
<select name="methods" id="methods">

  <option value="Caesar">Caesar</option>


</select>
<br>
<br>
<input type="button" value="Encrypt" onClick=encryption()>


<br>
<br>
<textarea name="text" id="text_decoded" style="width: 30%;height: 200px" 
readonly="readonly"></textarea>
</form>

你的文字:



选择您的方法:

凯撒



下面是我的javascript代码:

function encryption() {    
switch(document.getElementById("methods").value) {
    case "Caesar":
        var str = document.getElementById("text_encode").value;
        var amount = prompt("Number of shift");
        var output = "";

        for (var i = 0; i < str.length; i ++) {
            var c = str[i];
            var code = str.charCodeAt(i);

            if ((code >= 65) && (code <= 90))
                c = String.fromCharCode(((code - 65 + amount) % 26) + 65);
            else if ( (code >= 97) && (code <= 122) )
                c = String.fromCharCode(((code - 97 + amount) % 26) + 97);

            output += c;
        }
        document.getElementById("text_decoded").value=output;
        break;
    }
}
函数加密(){
开关(document.getElementById(“方法”).value){
“凯撒”案:
var str=document.getElementById(“文本编码”).value;
风险值金额=提示(“班次”);
var输出=”;
对于(变量i=0;i如果((代码>=65)&&&(代码=97)&&&(代码错误是这一行:

var amount = prompt("Number of shift");
默认情况下,这将返回一个字符串,但它可能包含一个数字-因此,如果我在提示框中输入
10
,则
amount
将为:

amount = "10"
要解决此问题,需要将字符串解析为整数:

var amount = Number(prompt("Number of shift"));

那么您的代码应该可以工作。

错误是这一行:

var amount = prompt("Number of shift");
默认情况下,这将返回一个字符串,但它可能包含一个数字-因此,如果我在提示框中输入
10
,则
amount
将为:

amount = "10"
要解决此问题,需要将字符串解析为整数:

var amount = Number(prompt("Number of shift"));

那么你的代码应该可以工作。

谢谢!我想如果我输入一个数字,它甚至可以正确识别为字符串,但我想下次我需要更加小心。谢谢!我想如果我输入一个数字,它甚至可以正确识别为字符串,但我想下次我需要更加小心。那是什么呢问题?请回答你的问题。当你运行代码时会发生什么?你期望会发生什么?那么问题是什么?请回答你的问题。当你运行代码时会发生什么?你期望会发生什么?