javascript - 我如何加密整个用户输入?

标签 javascript reactjs debugging

我正在尝试加密用户输入的单词,但它只加密该单词的最后一个字母。

换句话说,如果我输入abc并点击按钮,浏览器将显示z而不是xyz。它忽略ab的加密。

我做错了什么以及如何纠正这个问题?

import React, { Component } from 'react';

class Main extends Component {
    constructor(props) {
        super(props);

        this.state = {
            show: false,
            encryptedValue: null
        };
    }

    encrypt = () => {
        let input = document.getElementById("inputText").value;
        let encryptedValue;

        let temp = "";

        for(let i = 0; i < input.length; i++) {
            temp += input[i];

            switch(input[i].charAt(i)) {
                case "a":
                    encryptedValue = "x";
                    break;
                case "b":
                    encryptedValue = "y";
                    break;
                case "c":
                    encryptedValue = "z";
                    break;
                default:
                    encryptedValue = null;

            }
        }

        document.getElementById("res").innerHTML = temp;

        this.setState({show: true, encryptedValue: encryptedValue});
    };

    render() {
        return(
            <div>
                <input type="text" placeholder="type something" id="inputText"/>
                <button onClick={() => this.encrypt()}>Click to encrypt</button>
                <h1 id="res">{this.state.encryptedValue}</h1>
            </div>
        );
    }
}

export default Main;

最佳答案

在您的 switch 语句中,您不断将 encryptedValue 设置为一个全新的值,而不是附加到您的之前的加密值。对于abc,它只会记住您加密的最后一个字符,因此是z

如果您想解决此问题,请将 = 更改为 +=,以便它附加到 encryptedValue 而不是覆盖它。

您似乎正在切换 input[i].charAt(i) ,这会导致错误,因为 input[i] 已包含您要输入的字符想切换。

let input = "abc";
let encryptedValue = "";

for (let i = 0; i < input.length; i++) {

  switch (input[i]) {
    case "a":
      encryptedValue += "x";
      break;
    case "b":
      encryptedValue += "y";
      break;
    case "c":
      encryptedValue += "z";
      break;
    default:
      encryptedValue += "";

  }
}

console.log(encryptedValue);

关于javascript - 我如何加密整个用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52956437/

相关文章:

c - 构建VFML增量决策树切分故障

python - 使用 WingIDE 调试 Python bottle 应用程序

Javascript函数在调用之前执行

javascript - 使用 Set 时取消选中项目不起作用

javascript - 数据表隐藏搜索输入和行数下拉列表

javascript - agora.io 的 react.js 中是否有 UI 包

reactjs - React 中的等价于 Angular 2 中的 *ngFor

ruby - 在 JRuby 9000 中调试

javascript - 如何在 webpack 中添加编译时全局变量?

javascript - 如何在选择标签上打开新选项卡