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 相关文章推荐
更换select下拉菜单背景样式的实现代码
Dec 20 Javascript
JavaScript实现的类字典插入或更新方法实例
Jul 10 Javascript
js控件Kindeditor实现图片自动上传功能
Jul 20 Javascript
漫谈JS引擎的运行机制 你应该知道什么
Jun 15 Javascript
jquery实现简单Tab切换菜单效果
Jul 17 Javascript
AngularJS包括详解及示例代码
Aug 17 Javascript
JS实现title标题栏文字不间断滚动显示效果
Sep 07 Javascript
AngularJS实现自定义指令及指令配置项的方法
Nov 20 Javascript
详解Node.js模板引擎Jade入门
Jan 19 Javascript
Javascript获取某个月的天数
May 30 Javascript
js脚本中执行java后台代码方法解析
Oct 11 Javascript
Vue 实现v-for循环的时候更改 class的样式名称
Jul 17 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
Session保存到数据库的php类分享
2011/10/24 PHP
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
基于PHP常用函数的用法详解
2013/05/10 PHP
php更新mysql后获取改变行数的方法
2014/12/25 PHP
TNC vs BOOM BO3 第三场2.13
2021/03/10 DOTA
过虑特殊字符输入的js代码
2010/08/05 Javascript
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
Jquery实现仿新浪微博获取文本框能输入的字数代码
2013/02/22 Javascript
js实现的切换面板实例代码
2013/06/17 Javascript
DOM 高级编程
2015/05/06 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
jQuery实现简单滚动动画效果
2016/04/07 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
js+css3实现旋转效果
2017/01/20 Javascript
JS中cookie的使用及缺点讲解
2017/05/13 Javascript
javascript  数组排序与对象排序的实例
2017/07/17 Javascript
vue中v-model的应用及使用详解
2018/06/27 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
layui使用button按钮 点击出现弹层 弹层中加载表单的实例
2019/09/04 Javascript
JavaScript实现留言板案例
2020/03/17 Javascript
Python批量重命名同一文件夹下文件的方法
2015/05/25 Python
浅谈Python爬取网页的编码处理
2016/11/04 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
解决tensorflow添加ptb库的问题
2020/02/10 Python
K最近邻算法(KNN)---sklearn+python实现方式
2020/02/24 Python
一款纯css3实现的tab选项卡的实列教程
2014/12/11 HTML / CSS
NBA欧洲商店(西班牙):NBA Europe Store ES
2019/04/16 全球购物
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
如何用JQuery进行表单验证
2013/05/29 面试题
在校生自我鉴定
2014/01/23 职场文书
班级寄语大全
2014/04/10 职场文书
道路运输企业安全生产责任书
2014/07/28 职场文书
2015年入党积极分子评语
2015/03/26 职场文书
运动会广播稿100字
2015/08/19 职场文书
python脚本框架webpy模板控制结构
2021/11/20 Python