在警告的Encrypted
值为NaN
的情况下,如何解决此问题?
function Encrypt() {
var Plaintext = document.getElementById("txt").value;
var Key = Math.floor(Math.random() * 26) + 1;
var Chaesarshifted = caesarShift(Plaintext,Key);//i just didn't paste Chaesarshift code
var Encrypted;
alert(Chaesarshifted);
for (let index = 0; index < Chaesarshifted.length; index++) {
Chaesarshifted.toLowerCase();
//till here everything works fine
Encrypted += Chaesarshifted.charCodeAt(index) - 96;
}
alert(Encrypted);// Alert says NaN
}
答案 0 :(得分:1)
未设置Encrypted
的初始值。因此,当您尝试+=
时,它不知道如何处理该操作。
您应该将Encrypted
填入空白字符串""
作为起始值。
然后,在for循环中,Chaesarshifted.toLowerCase();
不会设置该值,但必须将其存储。
此外,您无法添加Encrypted
文本。您需要将字符改回Unicode字符。甚至可能构建一个数组以供以后连接。
最后,您应该以小写字母开头变量名,以遵守约定。
将它们放在一起:
function Encrypt() {
var plaintext = document.getElementById("txt").value;
var key = Math.floor(Math.random() * 26) + 1;
var chaesarshifted = caesarShift(plaintext,Key); //missing chaesarshift code
var encrypted = "";
alert(chaesarshifted);
chaesarshifted = chaesarshifted.toLowerCase();
for (let index = 0; index < chaesarshifted.length; index++) {
//missing code
encrypted += String.fromCharCode(chaesarshifted.charCodeAt(index) - 96);
}
alert(encrypted);// Alert will show garbled text (offset values from chaesarshift str)
}
编辑:感谢Barmar's comment让我更加思考问题。