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 相关文章推荐
使Ext的Template可以解析二层的json数据的方法
Dec 22 Javascript
基于jQuery实现的水平和垂直居中的div窗口
Aug 08 Javascript
javaScript如何处理从java后台返回的list
Apr 24 Javascript
把Node.js程序加入服务实现随机启动
Jun 25 Javascript
jQuery实现三级菜单的代码
May 09 Javascript
jQuery前端开发35个小技巧
May 24 Javascript
原生JS实现的放大镜效果实例代码
Oct 15 Javascript
移动端js图片查看器
Nov 17 Javascript
AngularJS服务service用法总结
Dec 13 Javascript
javascript中的深复制详解及实例分析
Dec 29 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
Apr 13 jQuery
微信小程序获取微信运动步数的实例代码
Jul 20 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文件上传类实例讲解
2015/10/27 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
iOS自定义提示弹出框实现类似UIAlertView的效果
2016/11/16 PHP
深入理解JS中的变量及作用域、undefined与null
2014/03/04 Javascript
在Node.js中实现文件复制的方法和实例
2014/06/05 Javascript
JS实现很酷的EMAIL地址添加功能实例
2015/02/28 Javascript
jQuery背景插件backstretch使用指南
2015/04/21 Javascript
理解javascript中的with关键字
2016/02/15 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
Vue2.X 通过AJAX动态更新数据
2018/07/17 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
Vue中computed、methods与watch的区别总结
2019/04/10 Javascript
Vue实现剪贴板复制功能
2019/12/31 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
Python Web框架Tornado运行和部署
2020/10/19 Python
老生常谈进程线程协程那些事儿
2017/07/24 Python
Python实现矩阵转置的方法分析
2017/11/24 Python
python正则表达式爬取猫眼电影top100
2018/02/24 Python
Python坐标轴操作及设置代码实例
2020/06/04 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
接口中的方法可以是abstract的吗
2015/07/23 面试题
建筑工程技术应届生自荐信
2013/09/27 职场文书
自我评价的写作规则
2014/01/06 职场文书
文明宿舍获奖感言
2014/02/07 职场文书
婚礼答谢宴主持词
2014/03/14 职场文书
小学生演讲稿大全
2014/04/25 职场文书
建设工程授权委托书
2014/09/22 职场文书
2014年自愿离婚协议书范本
2014/09/25 职场文书
政风行风整改报告
2014/11/06 职场文书
课外活动总结
2015/02/04 职场文书
困难补助申请报告
2015/05/19 职场文书
2015年度企业工作总结
2015/05/21 职场文书
现货白银电话营销话术
2015/05/29 职场文书
Nginx+Tomcat实现负载均衡、动静分离的原理解析
2021/03/31 Servers
MySQL分区路径子分区再分区
2022/04/13 MySQL
Linux中一对多配置日志服务器的详细步骤
2022/07/23 Servers