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 相关文章推荐
利用js跨页面保存变量做菜单的方法
Jan 17 Javascript
读jQuery之十一 添加事件核心方法
Jul 31 Javascript
了解一点js的Eval函数
Jul 26 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
Jun 27 Javascript
js添加事件的通用方法推荐
May 15 Javascript
jQuery实现磁力图片跟随效果完整示例
Sep 16 Javascript
JavaScript浮点数及运算精度调整详解
Oct 21 Javascript
浅谈让你的代码更简短,更整洁,更易读的ES6小技巧
Oct 25 Javascript
JavaScript实现星级评价效果
May 17 Javascript
详解vue 在移动端体验上的优化解决方案
May 20 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
Dec 23 jQuery
javascript利用canvas实现鼠标拖拽功能
Jul 23 Javascript
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 5.3.0 安装分析心得
2009/08/07 PHP
c#中的实现php中的preg_replace
2009/12/21 PHP
Mac系统下使用brew搭建PHP(LNMP/LAMP)开发环境
2015/03/03 PHP
php通过smtp邮件验证登陆的方法
2016/05/11 PHP
php封装的mysqli类完整实例
2016/10/18 PHP
PHP CURL实现模拟登陆并上传文件操作示例
2020/01/02 PHP
php判断IP地址是否在多个IP段内
2020/08/18 PHP
IE和Firefox在JavaScript应用中的兼容性探讨
2008/04/01 Javascript
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
javascript实现checkbox全选的代码
2015/04/30 Javascript
简介AngularJS中使用factory和service的方法
2015/06/17 Javascript
mvc中form表单提交的三种方式(推荐)
2016/08/10 Javascript
BootStrap入门教程(三)之响应式原理
2016/09/19 Javascript
jQuery事件对象总结
2016/10/17 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
JS运动特效之完美运动框架实例分析
2018/01/24 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
2019/09/03 jQuery
使用js获取身份证年龄的示例代码
2020/12/11 Javascript
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
Python的条件锁与事件共享详解
2019/09/12 Python
Python 矩阵转置的几种方法小结
2019/12/02 Python
使用Python实现分别输出每个数组
2019/12/06 Python
使用Pandas将inf, nan转化成特定的值
2019/12/19 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
django 文件上传功能的相关实例代码(简单易懂)
2020/01/22 Python
Python基于jieba, wordcloud库生成中文词云
2020/05/13 Python
浅谈Python 参数与变量
2020/06/20 Python
size?德国官方网站:英国伦敦的球鞋精品店
2018/03/17 全球购物
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
学院领导推荐信
2013/10/30 职场文书
启动仪式策划方案
2014/06/14 职场文书
2015年银行柜员工作总结报告
2015/04/01 职场文书
运动会宣传语
2015/07/13 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
SQL Server删除表中的重复数据
2022/05/25 SQL Server