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 相关文章推荐
添加到收藏夹代码(兼容几乎所有的浏览器)
Jan 09 Javascript
js 数组操作代码集锦
Apr 28 Javascript
jQuery Selector选择器小结
May 06 Javascript
在子窗口中关闭父窗口的一句代码
Oct 21 Javascript
Jquery实现图片预加载与延时加载的方法
Dec 22 Javascript
JavaScript模拟实现继承的方法
Mar 30 Javascript
jQuery仿gmail实现fixed布局的方法
May 27 Javascript
jQuery实现别踩白块儿网页版小游戏
Jan 18 Javascript
Bootstrap缩略图与警告框学习使用
Feb 08 Javascript
Vue表单类的父子组件数据传递示例
May 03 Javascript
VuePress 快速踩坑小结
Feb 14 Javascript
vue模仿网易云音乐的单页面应用
Apr 24 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 数组的合并、拆分、区别取值函数集
2010/02/15 PHP
PHP通过正则表达式下载图片到本地的实现代码
2011/09/19 PHP
关于URL最大长度限制的相关资料查证
2014/12/23 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
php中ob函数缓冲机制深入理解
2015/08/03 PHP
分享PHP计算两个日期相差天数的代码
2015/12/23 PHP
php判断电子邮件是否正确方法
2018/12/04 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
2019/07/24 PHP
广告切换效果(缓动切换)
2009/05/27 Javascript
parseInt parseFloat js字符串转换数字
2010/08/01 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
JavaScript基于原型链的继承
2016/06/22 Javascript
Javascript发送AJAX请求实例代码
2016/08/21 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
JS实现获取进今年第几天是周几的方法分析
2018/06/27 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
2018/09/11 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
pycharm 使用心得(六)进行简单的数据库管理
2014/06/06 Python
python求pi的方法
2014/10/08 Python
python中OrderedDict的使用方法详解
2017/05/05 Python
Python使用requests及BeautifulSoup构建爬虫实例代码
2018/01/24 Python
数据清洗--DataFrame中的空值处理方法
2018/07/03 Python
python/golang实现循环链表的示例代码
2020/09/14 Python
一款利用html5和css3实现的3D滚动特效的教程
2015/01/04 HTML / CSS
AVON雅芳官网:世界上最大的美容化妆品公司之一
2016/11/02 全球购物
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
生产内勤岗位职责
2013/12/07 职场文书
食品安全承诺书
2014/05/22 职场文书
三严三实对照检查材料
2014/08/25 职场文书
具结保证书
2015/01/17 职场文书
2016年党校科级干部培训班学习心得体会
2016/01/06 职场文书
python中出现invalid syntax报错的几种原因分析
2022/02/12 Python