对于一个学校项目,我正在尝试创建一个有关加密方法的网站,但是现在我的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;
}
}
如果您想直接测试出什么问题,也可以去这里:https://www.w3schools.com/code/tryit.asp?filename=FXJU1NAG37C0
答案 0 :(得分:2)
错误是这一行:
var amount = prompt("Number of shift");
默认情况下,这将返回一个字符串,但它可能包含数字-因此,如果我在提示框中输入10
,则amount
将是:
amount = "10"
要解决此问题,您需要将字符串解析为整数:
var amount = Number(prompt("Number of shift"));
然后您的代码应该可以使用。