Javascript 当textarea代替input type=text时,写入和解码编码消息的程序会出现故障

Javascript 当textarea代替input type=text时,写入和解码编码消息的程序会出现故障,javascript,html,char,Javascript,Html,Char,我有一个程序,使用加密序列生成和解码秘密消息,消息,字母转换成数字,数字/字母与随机生成的加密序列中的相应数字相加,程序通过减法解码,但为了解释更长的消息,我用了替代,它发出了闪光。你自己看看吧。我已将问题隔离到文本区域。这是我的密码 解码 留言 这里的加密序列 解码 var seq=document.getElementById(“加密序列”).value; var mes=document.getElementById(“编码消息”).value; var convertedSeqAr

我有一个程序,使用加密序列生成和解码秘密消息,消息,字母转换成数字,数字/字母与随机生成的加密序列中的相应数字相加,程序通过减法解码,但为了解释更长的消息,我用了替代,它发出了闪光。你自己看看吧。我已将问题隔离到文本区域。这是我的密码


解码
留言

这里的加密序列

解码

var seq=document.getElementById(“加密序列”).value; var mes=document.getElementById(“编码消息”).value; var convertedSeqArray=[]; var messageDoneString=“”; var convertedMesArray=[]; var子数组=[]; var mesArray=[]; var x=0; var convertedMesArray=[]; var convertedSeqArray=[]; var messageDone=[]; seqArray=[]; var num=“”; 函数toArray(){ mes=document.getElementById(“编码消息”).value; mesArray=mes.拆分(“”); seq=document.getElementById(“加密序列”).value; seqArray=序列拆分(“,”); convertedSeqArray=seqArray.map(数字); convertedMesArray=mesArray.map(编号); 对于(var l=0;l

编码信息

编码 var seq=document.getElementById(“序列”); var cod=document.getElementById(“编码”); var数组=[]; var输出=document.getElementById(“h”).value.split(“”); var序列=[]; var sequenceCounter=0; 函数生成序列(长度){ 序列=[]; for(var c=0;c
问题在于开头的空格。如果开头有空格,你会看到那些奇怪的字母。我试着用
trim()
修复它,但没有成功。出于某种原因,当您复制并粘贴“编码邮件”时,它会在开头粘贴一个空格。可以使用
if
语句删除空格

    mes = document.getElementById("coded message").value.trim();
    mesArray = mes.split(" ");
    seq = document.getElementById("encryption sequence").value.trim();
    seqArray = seq.split(",");
    if (mes[0] === " ")
      mes.shift();
    if (seq[0] === " ")
      seq.shift();
    convertedSeqArray = seqArray.map(Number);
    convertedMesArray = mesArray.map(Number);
    for (var l = 0; l < mesArray.length; l++) {
      subArray.push(convertedMesArray[l] - convertedSeqArray[l]);

      num = String.fromCharCode(96 + subArray[l]);

      messageDone.push(num);
    }
    for (var q = 0; q < messageDone.length; q++) {
      messageDoneString = messageDoneString + messageDone[q];
    }
mes=document.getElementById(“编码消息”).value.trim();
mesArray=mes.拆分(“”);
seq=document.getElementById(“加密序列”).value.trim();
seqArray=序列拆分(“,”);
如果(mes[0]==“”)
mes.shift();
如果(序号[0]=“”)
seq.shift();
convertedSeqArray=seqArray.map(数字);
convertedMesArray=mesArray.map(编号);
对于(var l=0;l

我确实使用了
trim
,因为它确实删除了足够多的空格,直到剩下一个为止,还删除了任何额外的空格(不应该出现)。由于两个字符串都变成了数组,我们可以在变量上使用数组函数。

“但是我用它来代替较长的消息”我不太明白,你能详细说明一下吗?输入框会切断较长的消息,在切换到
textarea
之后,textarea让输入更长的信息变得更容易,看起来也更漂亮。它开始出现故障了?是的。它开始向我反馈错误的字符和错误的数字。我发布了一个答案。另外,我建议您删除
之间的空格。这一空间可能会让用户感到沮丧。我知道我在测试时很快就感到沮丧了。Kay,我会试试。如果我使用substring()删除第一个字符,它会起作用,谢谢!