Javascript 使用charCodeAt转换时,我遇到一个NaN错误

Javascript 使用charCodeAt转换时,我遇到一个NaN错误,javascript,string,char,Javascript,String,Char,如果警报的加密值为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

如果警报的
加密
值为
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
}
函数加密(){
var Plaintext=document.getElementById(“txt”).value;
var Key=Math.floor(Math.random()*26)+1;
var Chaesarshift=caesashift(纯文本,键);//我只是没有粘贴Chaesarshift代码
var加密;
警报(Chaesarshifted);
for(让index=0;index
未设置
加密的
的初始值。因此,当您试图对其执行
+=
操作时,它不知道如何处理该操作

对于起始值,您应该将
加密的
初始化为空字符串


然后,在for循环中,
chaesashifted.toLowerCase()不设置值,但必须存储

此外,您的逻辑已关闭,无法附加
加密的
文本。您需要将该字符更改回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)
}
函数加密(){
var plaintext=document.getElementById(“txt”).value;
var key=Math.floor(Math.random()*26)+1;
var chaesarshift=caesashift(明文,键);//缺少chaesarshift代码
var=”;
警报(chaesarshifted);
chaesashifted=chaesashifted.toLowerCase();
for(让index=0;index

编辑:谢谢你让我更多地思考这个问题。

你确定他想做加法而不是串联吗?谢谢你的回答,我一回到家就试试!(如果我在努力学习更多英语时犯了错误,请纠正我)如果你必须在你的问题中添加填充文本,这意味着你没有很好地解释这个问题。他们不允许你发布几乎全是代码的问题是有原因的。加密值应该是什么而不是
NaN
chaeshifted.toLowerCase()什么都不做。它返回
Chaesarshifted
的小写副本,但您不会将其存储在任何位置。它不会就地修改字符串(JavaScript字符串是不可变的)。