随机验证码验证【JavaScript】

 这段 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 属性,使其在页面上显示出来。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1544069.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Vue3教程 - 2 开发环境搭建

更好的阅读体验&#xff1a;点这里 &#xff08; www.foooor.com &#xff09; 2 开发环境搭建 要进行 Vue 开发&#xff0c;需要安装 Node.js&#xff0c;因为构建 Vue 项目的工具&#xff0c;例如 Webpack、Vite等&#xff0c;这些工具依赖于Node.js环境来运行。 Node.js…

OpenAI GPT-3 API: What is the difference between davinci and text-davinci-003?

题意&#xff1a;OpenAI GPT-3 API&#xff1a;davinci 和 text-davinci-003 有什么区别 问题背景&#xff1a; Im testing the different models for OpenAI, and I noticed that not all of them are developed or trained enough to give a reliable response. 我正在测试…

玩手机数据集 8201张玩手机的照片,有对应的xml和txt文件,可以用于yolo训练

玩手机数据集 8201张玩手机的照片&#xff0c;有对应的xml和txt文件&#xff0c;可以用于yolo训练 玩手机数据集&#xff08;Phone Usage Detection Dataset&#xff09; 数据集概述 该数据集专为检测人们使用手机的行为设计&#xff0c;旨在帮助研究人员和工程师开发高效的…

Sentinel-1 数据处理时如何手动下载高程数据

在Sentinel-1 数据数据预处理时&#xff0c;会使用高程数据进行地形校正。但选择自动下载高程时&#xff0c;由于网络原因经常会卡死&#xff0c;造成预处理过程不能正常进行&#xff01; 这个问题经过我的反复实践&#xff0c;可以通过手动下载高程数据来解决。下面是具体方法…

MySQL之基本查询(一)(insert || select)

目录 一、表的增删查改 二、表的增加insert 三、表的读取select where 条件子句 结果排序 筛选分页结果 一、表的增删查改 我们平时在使用数据库的时候&#xff0c;最重要的就是需要对数据库进行各种操作。而我们对数据库的操作一般来说也就是四个操作&#xff0c;CRUD :…

【学术会议征稿】第七届电力电子与控制工程国际学术会议(ICPECE 2024)

高录用|快检索|JPCS独立出版ISSN:1742-6596 连续6年EI检索&#xff0c;稳定且快速 见刊后均1个月检索 第七届电力电子与控制工程国际学术会议&#xff08;ICPECE 2024&#xff09; 2024 7th International Conference on Power Electronics and Control Engineering 2024年…

认知作战壳吉桔:未来认知战战略全案发展趋势

认知作战壳吉桔&#xff1a;未来认知战战略全案发展趋势 认知作战壳吉桔&#xff1a;未来认知战战略全案发展趋势 关键词&#xff1a;认知战战术融合, 数据驱动决策, 生成式人工智能AIGC, 影响力认知, 个性化定制, 沉浸式体验, 视频直播认知, 受众体验优化, 社交媒体互动, 可…

[PICO VR]Unity如何往PICO VR眼镜里写持久化数据txt/json文本

前言 最近在用PICO VR做用户实验&#xff0c;需要将用户实验的数据记录到PICO头盔的存储空间里&#xff0c;记录一下整个过程 流程 1.开启写入权限 首先开启写入权限&#xff1a;Unity->Edit->Player->安卓小机器人->Other Settings->Configuration->Wri…

如何用LightningChart Python实现地震强度数据可视化应用程序?

LightningChart Python是知名图表控件公司LightningChart Ltd正在研发的 Python 图表&#xff0c;目前还未正式推出&#xff0c;感兴趣的朋友可以戳文末链接申请试用&#xff01; 什么是地面震动强度 Python 应用程序&#xff1f; 地面震动是地震的基本特征&#xff0c;会对建…

【Linux】fork入门级使用

目录 一、前置准备 1、进程的基本概念 2、进程标识符PID、PPID 1&#xff09;pid介绍 2&#xff09;获取pid和ppid 二、fork函数 1、fork的基本介绍 1&#xff09;fork&#xff08;&#xff09;&#xff1a; 创建子进程 2&#xff09;对于函数具体的描述 3&#xff09…

yuque-dl-语雀知识库下载为本地markdown

之前有下载语雀的需求&#xff0c;发现了一个开源项目&#xff0c;用起来还是很顺手的 需要环境 需要前端的node环境 https://nodejs.cn/ Node.js 18.4 or later 插入 npm i -g yuque-dl 使用 $ yuque-dl --helpUsage:$ yuque-dl <url>Commands:<url> …

Python 如何读取和写入文件

Python 如何读取和写入文件 文件操作是编程中常见的任务&#xff0c;几乎所有编程语言都支持文件的读写功能。在 Python 中&#xff0c;文件操作简单直观&#xff0c;适用于从初学者到经验丰富的开发者。无论是处理小型文本文件&#xff0c;还是需要处理大型数据文件&#xff…

fo-dicom是如何实现DICOM 的网络通信功能

一、前言 前面的文章&#xff0c;我们介绍了fo-dicom是一个怎样的开源库等一些内容&#xff1a; fo-dicom&#xff0c;第一个基于.NET Standard 2.0 开发的DICOM开源库fo-dicom开源库是如何满足 DICOM标准的基本要求fo-dicom开发之DICOM数据解析&#xff1a;常见数据类型及处…

【Transformers基础入门篇2】基础组件之Pipeline

文章目录 一、什么是Pipeline二、查看PipeLine支持的任务类型三、Pipeline的创建和使用3.1 根据任务类型&#xff0c;直接创建Pipeline&#xff0c;默认是英文模型3.2 指定任务类型&#xff0c;再指定模型&#xff0c;创建基于指定模型的Pipeline3.3 预先加载模型&#xff0c;再…

pycharm恢复两边侧边栏常驻显示

问题&#xff1a; pycharm两边的侧边栏菜单默认不显示&#xff08;打开project还得用alt1快捷键&#xff09;&#xff0c;非常不方便&#xff0c;如下图&#xff1a; pycharm版本&#xff1a;2022.3 professional 勾选&#xff1a;setttngs -> Appearance -> tool Wind…

云原生虚拟化kubevirt安装

kubevirt 介绍 Kubevirt 是 Redhat 开源的一套以容器方式运行虚拟机的项目&#xff0c;通过 kubernetes 云原生方式来管理虚拟机生命周期。它通过使用自定义资源&#xff08;CRD&#xff09;和其它 Kubernetes 功能来无缝扩展现有的集群&#xff0c;以提供一组可用于管理虚拟机…

JavaScript的注释与常见输出方式

注释 源码中注释是不被引擎所解释的&#xff0c;它的作用是对代码进行解释。Javascript 提供两种注释的写法:一种是单行注释&#xff0c;用//起头;另一种是多行注释&#xff0c;放在/*和*/之间。 单行注释&#xff1a; //这是单行注释 多行注释&#xff1a; /*这是 多行 注…

远程升级,你成功了吗?

最近又遇到了远程升级失败的情况&#xff0c;而且是不明原因的多次接连失败。。。 事情是这样的&#xff1a;最近有客户反馈在乡村里频繁出现掉线的情况。通过换货、换SIM卡对比排查测试&#xff0c;发现只有去年5月22号采购的那批模块在客户环境附近会出现掉线的情况&#xf…

服务器操作系统【sar 命令】

sar 安装、语法参数说明以及示例 文章目录 功能概述一、功能介绍1.安装配置2. 配置3. 启动二、sar 语法及参数说明三、示例及释义1.汇报 io 传输速率信息2.内存分页信息3.块设备状态信息4.hugepages 利用率统计信息5.列长度和负载平均值6.内存利用率统计信息7.swap 交换空间利用…

Redis数据持久化总结笔记

Redis 是内存数据库&#xff0c;如果不将内存中的数据库状态保存到磁盘&#xff0c;那么一旦服务器进程退出&#xff0c;服务器中的数据库状态也会消失。所以 Redis 提供了持久化功能&#xff01; Redis 提供了 2 个不同形式的持久化方式 RDB&#xff08;Redis DataBase&#…