使用charCodeAt转换时出现NaN错误

时间:2018-08-30 18:56:41

标签: javascript string char

在警告的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
}

1 个答案:

答案 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让我更加思考问题。