凯撒密码原理及ASCII转换代码输入无返回问题求助
凯撒密码工作原理
凯撒密码是种简单的替换加密手段,核心逻辑就是给每个字母按固定位数在字母表里偏移。比如偏移3位的话,A会变成D,B变成E……X变A,Y变B,Z变C,小写字母规则同理,非字母的字符一般直接保留原样。
你的代码问题修复
先捋下你代码里的几个明显问题:
- HTML里按钮没加
id="button",导致JS里getElementById("button")找不到元素;输入框ID是id1,不是你JS里写的input;按钮绑定的onclick="myFunction()"和JS里给button.onclick赋值的逻辑冲突。 - 你一开始就获取了
input.value,这时候页面刚加载,输入框是空的,应该在点击按钮的时候再去拿输入值。 - JS里的
input2根本没定义,而且charCodeAt()需要传索引(比如0,因为你输入框限制了最多1个字符),它直接返回数值,不用加.value。 - 结果要显示到
id="demo"的p标签里,不是去修改输入框的innerHTML。
修复后的完整代码:
HTML部分
<h1>ASCII</h1> <button id="button" type="button" class="btn btn-dark">Coding</button> <div class="input-group input-group-sm mb-3"> <span class="input-group-text" id="inputGroup-sizing-sm">Say it</span> <input id="id1" type="text" class="form-control" name="text1" maxLength="1"> </div> <p id="demo" style="color:red;"></p>
JavaScript部分
const button = document.getElementById("button"); const input = document.getElementById("id1"); const demo = document.getElementById("demo"); button.onclick = function() { const inputChar = input.value.trim(); if (inputChar) { const charCode = inputChar.charCodeAt(0); demo.textContent = `字符的ASCII码是:${charCode}`; } else { demo.textContent = "请输入一个字符"; } };
凯撒密码实现思路(供你作业参考)
如果要基于这个ASCII功能做凯撒密码,可以按这个逻辑来:
- 先获取输入的文本(可以支持多字符)和偏移量(比如让用户输入偏移几位)。
- 遍历每个字符:
- 要是大写字母(ASCII范围65-90):用
(charCode - 65 + 偏移量) % 26 + 65计算偏移后的ASCII码,自动处理循环(比如Z偏移1位变成A)。 - 要是小写字母(ASCII范围97-122):类似,用
(charCode - 97 + 偏移量) % 26 + 97。 - 非字母字符直接保留。
- 要是大写字母(ASCII范围65-90):用
- 把处理后的字符拼接起来,显示成最终加密后的文本。
内容的提问来源于stack exchange,提问作者Davi
相关产品推荐
相关产品推荐

