JS如何生成随机验证码


Posted in Javascript onMarch 02, 2020

本文实例为大家分享了JS生成随机验证码的具体代码,供大家参考,具体内容如下

JS如何生成随机验证码

在网站中我们很常见到形形色色的验证码,今天我们来用JS来生成一个随机的二维码。

我们需要用到canvas来进行验证码的绘制

什么是Canvas

HTML5 的 canvas 元素使用 JavaScript 在网页上绘制图像。
画布是一个矩形区域,您可以控制其每一像素。
canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。

思路

我们要做的二维码首先要有随机的数字,其次就是要有随机的位置。

HTML

<canvas id="canvas" style="border: 1px solid red; width: 80px; height: 40px;">
</canvas>

JS

function getVerification() { //二维码
 var ctx = document.getElementById("canvas").getContext("2d");
 // 清空画布
 ctx.clearRect(0,0, 400, 400);
 // 设置字体
 ctx.font = "128px bold 黑体";
 // 设置垂直对齐方式
 ctx.textBaseline = "top";
 // 设置颜色
 ctx.fillStyle = randomColor();
 // 绘制文字(参数:要写的字,x坐标,y坐标)
 ctx.fillText(getRandomNum(10), 0, getRandomNum(50));
 ctx.fillStyle = randomColor();
 ctx.fillText(getRandomNum(10), 50, getRandomNum(50));
 ctx.fillStyle = randomColor();
 ctx.fillText(getRandomNum(10), 100, getRandomNum(50));
 ctx.fillStyle = randomColor();
 ctx.fillText(getRandomNum(10), 150, getRandomNum(50));
}

我们使用ctx.fillStyle = randomColor();来设置随机的颜色,每写一个数字换一个颜色,randomColoe()函数代码如下,可以随机生成十六进制颜色码。

function randomColor() {
 var colorValue = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f";
 var colorArray = colorValue.split(",");
 var color = "#";
 for (var i = 0; i < 6; i++) {
 color += colorArray[Math.floor(Math.random() * 16)];
 }
 return color;
}

我们使用getRandomNum()来获取随机显示的数字和随机每次字体的y轴方向的位置。验证码的每个数字分别进行获取。传入的参数n来确定随机数范围。代码如下:

function getRandomNum(n){
 return parseInt(Math.random() * n); 
}

完整代码:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>2</title>
</head>

<body>
 <canvas id="canvas" style="border: 1px solid red; width: 80px; height: 40px;"></canvas>
 <span id="yanzhengma"></span><button onclick="getVerification()">看不清</button>
 <script>
 function randomColor() {
 var colorValue = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f";
 var colorArray = colorValue.split(",");
 var color = "#";
 for (var i = 0; i < 6; i++) {
 color += colorArray[Math.floor(Math.random() * 16)];
 }
 return color;
 }
 function getRandomNum(n){
 return parseInt(Math.random() * n); 
 }
 function getVerification() {
 var ctx = document.getElementById("canvas").getContext("2d");
 ctx.clearRect(0,0, 400, 400);
 // 设置字体
 ctx.font = "128px bold 黑体";
 // 设置垂直对齐方式
 ctx.textBaseline = "top";
 // 设置颜色
 ctx.fillStyle = randomColor();
 // 绘制文字(参数:要写的字,x坐标,y坐标)
 ctx.fillText(getRandomNum(10), 0, getRandomNum(50));
 ctx.fillStyle = randomColor();
 ctx.fillText(getRandomNum(10), 50, getRandomNum(50));
 ctx.fillStyle = randomColor();
 ctx.fillText(getRandomNum(10), 100, getRandomNum(50));
 ctx.fillStyle = randomColor();
 ctx.fillText(getRandomNum(10), 150, getRandomNum(50));
 }
 getVerification();
 </script>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
flash javascript之间的通讯方法小结
Dec 20 Javascript
默认让页面的第一个控件选中的javascript代码
Dec 26 Javascript
JSON序列化与解析原生JS方法且IE6和chrome测试通过
Sep 05 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
Feb 28 Javascript
QQ登录背景闪动效果附效果演示源码下载
Sep 22 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
Jun 07 Javascript
JS简单实现父子窗口传值功能示例【未使用iframe框架】
Sep 20 Javascript
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
May 08 Javascript
Vue.js更改调试地址端口号的实例
Sep 19 Javascript
JavaScript enum枚举类型定义及使用方法
May 15 Javascript
小程序瀑布流组件实现翻页与图片懒加载
May 19 Javascript
Vue2.x-使用防抖以及节流的示例
Mar 02 Vue.js
js实现烟花特效
Mar 02 #Javascript
ES6使用 Array.includes 处理多重条件用法实例分析
Mar 02 #Javascript
JS造成内存泄漏的几种情况实例分析
Mar 02 #Javascript
JavaScript HTML DOM 元素 (节点)新增,编辑,删除操作实例分析
Mar 02 #Javascript
JavaScript中break、continue和return的用法区别实例分析
Mar 02 #Javascript
Vue Router的手写实现方法实现
Mar 02 #Javascript
ES6中Set和Map用法实例详解
Mar 02 #Javascript
You might like
什么情况下可以不写PHP的闭合标签“?&gt;”
2014/08/28 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
javascript学习笔记(十一) 正则表达式介绍
2012/06/20 Javascript
js 连接数据库如何操作数据库中的数据
2012/11/23 Javascript
jquery实现图片渐变切换兼容ie6/Chrome/Firefox
2013/08/02 Javascript
jquery右下角弹出提示框示例代码
2013/10/08 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
2017/01/23 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
JS库之Three.js 简易入门教程(详解之一)
2017/09/13 Javascript
vue-router传递参数的几种方式实例详解
2018/11/13 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
vue-cli3跨域配置的简单方法
2019/09/06 Javascript
Nuxt使用Vuex的方法示例
2019/09/06 Javascript
JS图片预加载三种实现方法解析
2020/05/08 Javascript
python中使用sys模板和logging模块获取行号和函数名的方法
2014/04/15 Python
Python实现的朴素贝叶斯分类器示例
2018/01/06 Python
python pandas 如何替换某列的一个值
2018/06/09 Python
python解析含有重复key的json方法
2019/01/22 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
用python实现英文字母和相应序数转换的方法
2019/09/18 Python
潘婷洗发水广告词
2014/03/14 职场文书
工地标语大全
2014/06/18 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
田径运动会通讯稿
2014/09/13 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
pycharm无法导入lxml的解决办法
2021/03/31 Python
Nginx缓存设置案例详解
2021/09/15 Servers
WebRTC记录音视频流(web技术分享)
2022/02/24 Javascript
Win10玩csgo闪退如何解决?Win10玩csgo闪退的解决方法
2022/07/23 数码科技