JavaScript:为什么此代码不起作用?

时间:2016-04-17 10:23:22

标签: javascript html encryption text

我正在尝试创建一个文本加密器,但是当我输入此代码时,没有任何反应。我的代码出了什么问题?

function Encrypt(txt) {
var chars = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z'}
for (i = 0; i < txt.length; i++) {
    var chr = txt.charAt(i);
    var pos = chars.indexOf(chr);
    if (pos == chars.length) {
        pos = 0;
    }
    else {
        pos = pos++
    }
    txt.charAt(i) = chars[pos];
}
alert(txt);
}

3 个答案:

答案 0 :(得分:4)

你需要

  • 数组[]代替对象{}
  • 一些声明的变量
  • 空结果字符串newText,字符串只能使用character access
  • 读取
  • 有效检查字母是否在数组
  • 在没有作业的情况下递增pos
  • 使用编码字符附加结果字符串

function Encrypt(txt) {
    var chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'],
        i, newText = '', chr, pos;

    for (i = 0; i < txt.length; i++) {
        chr = txt[i];
        pos = chars.indexOf(chr);
        if (!~pos) {
            pos = 0;
        } else {
            pos++;
        }
        newText += chars[pos];
    }
    document.write(newText);
}

Encrypt('test');

答案 1 :(得分:0)

因为这不是数组,而是对象......而对象必须具有"index" : "value"结构。

改变这个:

var chars = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z'}

到此:

var chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z']

答案 2 :(得分:0)

不考虑其他答案中描述的错误,我加密字符串的提议是:

&#13;
&#13;
function Encrypt(txt) {
  var chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v','w', 'x', 'y', 'z'];
  var txtResult = txt.split('').map(function(val) {
    var pos = chars.indexOf(val);
    return chars[(pos == chars.length) ? 0 : (pos + 1)];
  }).join('');
  document.write(txtResult);
}
Encrypt('gaemaf');
&#13;
&#13;
&#13;