我正在制作一个HTML5和Javascript网站,它通过textarea
接收一些明文,应用凯撒密码3,并将输出发送给另一个textarea
。
但是,它不会产生任何输出。 这是我的代码:
<!DOCTYPE html>
<html>
<body>
<script language="JavaScript">
var x = document.getElementById("myTextArea").value;
function c_ciph(){
for (var i = 0, len = x.length; i < len; i++) {
if (x[i] == x[i].toUpperCase()){
var a = x[i].charCodeAt(0);
var e = ((a - 65 + 3) % 26) + 97;
var c = String.fromCharCode(e);
}
else if (x[i] == x[i].toLowerCase()){
var a = x[i].charCodeAt(0);
var e = ((a - 97 + 3) % 26) + 97;
var c = String.fromCharCode(e);
}
}
document.getElementById('result').value = x;
}
</script>
<div>
<h1>Cipher and Leetspeak Converter</h1>
<p>Welcome to the cipher and leetspeak converter.</p>
</div>
<div>
<textarea id = "myTextArea" rows = "6" cols = "80">
</textarea>
<p>Convert to:</p>
</div>
<div>
<form>
<input type="radio" name="codingStyle" value="caesar_cipher" onclick="c_ciph();"> Caesar Cipher <br>
<input type="radio" name="codingStyle" value="vigenere_cipher"> Vigenere Cipher<br>
<input type="radio" name="codingStyle" value="leetspeak"> Leetspeak
</form>
</div>
<div>
<button type="button">Convert</button>
</div>
<div>
<textarea id = "result" rows = "6" cols = "80">
</textarea>
</div>
</body>
</html>
这是网站:
enter image description here 但是,当&#34; Caesar Cipher&#34;时,第二个文本框中没有任何内容显示。 点击。
我是Javascript和HTML的新手,所以请指出尽可能多的错误。
编辑1:输出现在出现在第二个text area
。但是,我无法将x
的值更改为ciphertext
。它打印出相同的值。请参见此处的图片:
而不是第二个textarea
中的极客,应该是&#34; iggm&#34;。
请帮忙。
答案 0 :(得分:1)
您需要移动
var x = document.getElementById("myTextArea").value;
在函数内部,这样每次调用函数时都会为x赋值新值。
function c_ciph(){
var x = document.getElementById("myTextArea").value;
for (var i = 0, len = x.length; i < len; i++) {
if (x[i] == x[i].toUpperCase()){
var a = x[i].charCodeAt(0);
var e = ((a - 65 + 3) % 26) + 97;
var c = String.fromCharCode(e);
}
else if (x[i] == x[i].toLowerCase()){
var a = x[i].charCodeAt(0);
var e = ((a - 97 + 3) % 26) + 97;
var c = String.fromCharCode(e);
}
}
document.getElementById('result').value = x;
}
这里的工作示例 https://jsfiddle.net/vqsnmamy/2/