这段 JavaScript 代码实现了随机验证码的生成和验证功能。
实现效果:
代码:
<!DOCTYPE html>
<html lang="zh"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>随机验证码验证示例</title><style>#captcha {font-size: 24px;margin-bottom: 10px;}</style></head><body><div><div id="captcha"></div><input type="text" id="userInput" placeholder="请输入验证码"><button onclick="validateCaptcha()">验证</button><div id="result"></div></div><script>let generatedCaptcha = '';function generateCaptcha() {const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';generatedCaptcha = '';for (let i = 0; i < 6; i++) {generatedCaptcha += characters.charAt(Math.floor(Math.random() * characters.length));}document.getElementById('captcha').innerText = generatedCaptcha;}function validateCaptcha() {const userInput = document.getElementById('userInput').value;const resultDiv = document.getElementById('result');if (userInput === generatedCaptcha) {resultDiv.innerText = '验证码正确!';resultDiv.style.color = 'green';} else {resultDiv.innerText = '验证码错误,请重新输入。';resultDiv.style.color = 'red';generateCaptcha(); // 生成新的验证码}}// 页面加载时生成验证码window.onload = generateCaptcha;</script></body>
</html>
部分代码解析:
function generateCaptcha() {const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';generatedCaptcha = '';for (let i = 0; i < 6; i++) {generatedCaptcha += characters.charAt(Math.floor(Math.random() * characters.length));}document.getElementById('captcha').innerText = generatedCaptcha;
}
1. 函数定义
function generateCaptcha() {
- 这里定义了一个名为
generateCaptcha
的函数。这个函数没有参数,用于生成随机验证码。
2. 字符集定义
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
-
const characters
: 声明一个常量characters
,包含了所有可能的字符,包括:- 大写字母
A-Z
- 小写字母
a-z
- 数字
0-9
这个字符集的选择是为了确保验证码的多样性和复杂性,使得生成的验证码更难以被猜测。
- 大写字母
3. 清空之前的验证码
generatedCaptcha = '';
- 将全局变量
generatedCaptcha
重置为空字符串,以确保每次调用generateCaptcha
函数时,生成的新验证码不会与之前的验证码混淆。
4. 生成随机验证码
for (let i = 0; i < 6; i++) {generatedCaptcha += characters.charAt(Math.floor(Math.random() * characters.length));
}
-
for (let i = 0; i < 6; i++)
: 这是一个循环,执行 6 次,用于生成一个长度为 6 的验证码。 -
Math.random()
: 生成一个 0 到 1 之间的随机小数。 -
Math.random() * characters.length
: 将随机小数乘以characters
的长度(62),得到一个 0 到 62 之间的值。 -
Math.floor(...)
: 使用Math.floor
将得到的随机数向下取整,从而得到一个合法的索引值(0 到 61)。 -
characters.charAt(...)
: 使用这个索引从characters
中获取一个字符,并将其添加到generatedCaptcha
中。
5. 更新页面显示
document.getElementById('captcha').innerText = generatedCaptcha;
-
document.getElementById('captcha')
: 获取页面中 ID 为captcha
的元素(通常是一个div
)。 -
innerText = generatedCaptcha
: 将生成的验证码字符串赋值给该元素的innerText
属性,使其在页面上显示出来。