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+css 网页每次加载不同样式的实现方法
Dec 27 Javascript
JavaScript 嵌套函数指向this对象错误的解决方法
Mar 15 Javascript
javascript中的107个基础知识收集整理 推荐
Mar 29 Javascript
JavaScript生成的动态下雨背景效果实现方法
Feb 25 Javascript
JavaScript中的boolean布尔值使用学习及相关技巧讲解
May 26 Javascript
基于jQuery Easyui实现登陆框界面
Jul 10 jQuery
cropper js基于vue的图片裁剪上传功能的实现代码
Mar 01 Javascript
一个基于react的图片裁剪组件示例
Apr 18 Javascript
vue实现微信二次分享以及自定义分享的示例
Mar 20 Javascript
一文看懂如何简单实现节流函数和防抖函数
Sep 05 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
Jun 12 Javascript
vue动态设置路由权限的主要思路
Jan 13 Vue.js
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微信支付接口开发程序
2016/08/02 PHP
golang、python、php、c++、c、java、Nodejs性能对比
2017/03/12 NodeJs
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
php 替换文章中的图片路径,下载图片到本地服务器的方法
2018/02/06 PHP
Gambit vs ForZe BO3 第三场 2.13
2021/03/10 DOTA
图片按比例缩放函数
2006/06/26 Javascript
JavaScript更改class和id的方法
2008/10/10 Javascript
js对象的比较
2011/02/26 Javascript
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
$.each与$().each的区别示例介绍
2014/03/20 Javascript
JavaScript使用Replace进行字符串替换的方法
2015/04/14 Javascript
Zepto实现密码的隐藏/显示
2017/04/07 Javascript
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
layui框架中layer父子页面交互的方法分析
2017/11/15 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
浅谈微信小程序flex布局基础
2018/09/10 Javascript
layui实现左侧菜单点击右侧内容区显示
2019/07/26 Javascript
JS前端广告拦截实现原理解析
2020/02/17 Javascript
vue实现图片上传功能
2020/05/28 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
Python文件操作类操作实例详解
2014/07/11 Python
python获取list下标及其值的简单方法
2016/09/12 Python
用python实现百度翻译的示例代码
2018/03/09 Python
安装python时MySQLdb报错的问题描述及解决方法
2018/03/20 Python
python看某个模块的版本方法
2018/10/16 Python
python binascii 进制转换实例
2019/06/12 Python
css3发光搜索表单分享
2014/04/11 HTML / CSS
巴基斯坦购物网站:Goto
2019/03/11 全球购物
管理科学大学生求职信
2013/11/13 职场文书
新学期家长寄语
2014/01/19 职场文书
共产党员岗位承诺书
2014/05/29 职场文书
五四演讲稿范文
2014/09/03 职场文书
12.4全国法制宣传日活动方案
2014/11/02 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书
总结Python连接CS2000的详细步骤
2021/06/23 Python
WebWorker 封装 JavaScript 沙箱详情
2021/11/02 Javascript