Closed. This question needs debugging details。它当前不接受答案。
                        
                    
                
            
        
            
        
                
                    
                
            
                
                    想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                
                    2年前关闭。
            
        

    

我如何解决警报的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
}

最佳答案

未设置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让我更多地思考问题。

08-16 23:54