javascript - 我将如何加密整个用户输入?
问题描述
我正在尝试加密用户输入的单词,但它只加密该单词的最后一个字母。
换句话说,如果我输入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
一个全新的值,而不是附加到您以前的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);
推荐阅读
- python - 大熊猫根据条件写入子集,直到组类别结束
- flutter - 是否可以使用条件语句作为 CupertinoSlidingSegmentedControl 的一部分来控制 Flutter 中显示的选项数量?
- javascript - 如何使用每个可用单词的数组创建每个可能句子的版本?
- rest - Squarespace 可以连接到外部 Json Rest-API ...吗?
- python - 在 Python 中将 geovoronoi 库多边形插入到叶图
- react-native - 使用 React Native 更轻松地进行调试
- django - DRF Browserable API 触发其他 self.actions - 这反过来又触发了不相关的权限,导致 KeyError
- python - 使用多个 gpu 环境学习单个 gpu 时速度变慢的问题
- javascript - 使用 React,我无法将带有参数的函数发送到我的一个组件
- cluster-computing - “Report all chuns to master with exception [RemoteRun[master]] Unrecognized column……”报错