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 相关文章推荐
JavaScript Event学习第七章 事件属性
Feb 07 Javascript
基于JavaScript 数据类型之Boolean类型分析介绍
Apr 19 Javascript
Jquery通过Ajax访问XML数据的小例子
Nov 18 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
Nov 03 Javascript
angularjs学习笔记之简单介绍
Sep 26 Javascript
javascript jquery对form元素的常见操作详解
Jun 12 Javascript
JS创建对象的写法示例
Nov 04 Javascript
vue-loader教程介绍
Jun 14 Javascript
jquery实现搜索框功能实例详解
Jul 23 jQuery
JS/jQuery实现超简单的Table表格添加,删除行功能示例
Jul 31 jQuery
VUE兄弟组件传值操作实例分析
Oct 26 Javascript
解决vue页面渲染但dom没渲染的操作
Jul 27 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/10/12 PHP
php基于SQLite实现的分页功能示例
2017/06/21 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
php数组函数array_push()、array_pop()及array_shift()简单用法示例
2020/01/26 PHP
js自定义事件代码说明
2011/01/31 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
漫谈JS引擎的运行机制 你应该知道什么
2016/06/15 Javascript
原生js实现查询天气小应用
2016/12/09 Javascript
微信小程序开发经验总结(推荐)
2017/01/11 Javascript
jQuery图片拖动组件Dropzone用法示例
2017/01/17 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
基于JavaScript实现一个简单的Vue
2018/09/26 Javascript
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
微信小程序实现消息框弹出动画
2020/04/18 Javascript
js动态生成表格(节点操作)
2021/01/12 Javascript
[49:27]LGD vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python解惑之True和False详解
2017/04/24 Python
python 全局变量的import机制介绍
2017/09/07 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
2018/02/18 Python
python3用PIL把图片转换为RGB图片的实例
2019/07/04 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
python3中sorted函数里cmp参数改变详解
2020/03/12 Python
python json.dumps() json.dump()的区别详解
2020/07/14 Python
Django mysqlclient安装和使用详解
2020/09/17 Python
HTML5 placeholder属性详解
2016/06/22 HTML / CSS
2014年社区学雷锋活动总结
2014/03/09 职场文书
培训协议书范本
2014/04/22 职场文书
安全月活动总结
2014/05/05 职场文书
党支部先进事迹材料
2014/12/24 职场文书
2015年清明节活动总结
2015/02/09 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书
上手简单,功能强大的Python爬虫框架——feapder
2021/04/27 Python