基于JS实现一个随机生成验证码功能


Posted in Javascript onMay 29, 2019

效果展示

基于JS实现一个随机生成验证码功能

实现原理

1. html:一般就是一个div: <div id="code"></div> ,样式根据需求设计。

2. JS:1)将所有的验证码所用的字符放在一个字符串中

 

  2)在这个字符串的字符个数以内,随机生成索引号

  3)根据索引号查找对应字符,拼接成验证码的字符串

代码实现

HTML:

<div id="code"></div>

CSS:

* {
  margin: 0;
  padding: 0;
}
div {
  width: 80px;
  height: 30px;
  font-size: 18px;
  line-height: 30px;
  text-align: center;
  color: #333;
  border: 1px solid red;
  margin: 100px auto;
  cursor: pointer;
}

JavaScript:

var codeStr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
var oDiv = document.getElementById('code');
// 用来生成随机整数
function getRandom(n, m) { // param: (Number, Number)
  n = Number(n);
  m = Number(m);
  // 确保 m 始终大于 n
  if (n > m) {
    var temp = n;
    n = m;
    m = temp;
  }
  // 下有详细说明
  return Math.floor(Math.random()*(m - n) + n);
}
// 将随机生成的整数下标对应的字母放入div中
function getCode() {
  var str = '';
  // 验证码有几位就循环几次
  for (var i = 0;i < 4;i ++) {
    var ran = getRandom(0, 62);
    str += codeStr.charAt(ran);
  }
  oDiv.innerHTML = str;
}
getCode();// 调用函数,页面刷新也会刷新验证码
// 点击刷新验证码
oDiv.onclick = function(){
  getCode();
}

代码分析

JS:

1)将所有的验证码所用的字符放在一个字符串中

             -- > 代码第1行,除了字母数字也可放入中文汉字等。

 

        2)在这个字符串的字符个数以内,随机生成索引号

             -- > 第4行的函数用于生成随机整数,参数 (n, m)为数字,Number()确保是数字

        默认m > n,防止传参有误,用if判断后改正

        Math.random() -- > [0,1)

        Math.random() * (m - n) -- > [0, m - n)

        Math.random() * (m - n) + n -- > [n, m)

        为了能将codeStr所有的下标都取到,上述m若是codeStr.length,想要取值能取到最后一位,再使用Math.floor()向下取整。

        n 为 0,m 为 codeStr.length 则随机范围为codeStr的所有元素下标。例(n, m) -- > (0, 62)计算后的取值范围:下标为[0, 61]的整数。

        3)根据下标查找对应元素,拼接成验证码的字符串

        第17行的函数getCode()获取字符串中对应元素,并拼接成字符串返回到页面中。最后点击div可不断生成随机验证码。

完整代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>随机生成验证码</title>
  <style>
  * {
    margin: 0;
    padding: 0;
  }
  div {
    width: 80px;
    height: 30px;
    font-size: 18px;
    line-height: 30px;
    text-align: center;
    color: #333;
    border: 1px solid red;
    margin: 100px auto;
    cursor: pointer;
  }
  </style>
</head>

<body>
  <div id="code"></div>

  <script>
  var codeStr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  var oDiv = document.getElementById('code');
  // 用来生成随机整数
  function getRandom(n, m) { // param: (Number, Number)
    n = Number(n);
    m = Number(m);
    // 确保 m 始终大于 n
    if (n > m) {
      var temp = n;
      n = m;
      m = temp;
    }
    return Math.floor(Math.random()*(m - n) + n);
  }
  // 将随机生成的整数下标对应的字母放入div中
  function getCode() {
    var str = '';
    // 验证码有几位就循环几次
    for (var i = 0;i < 4;i ++) {
      var ran = getRandom(0, 62);
      str += codeStr.charAt(ran);
    }
    oDiv.innerHTML = str;
  }
  getCode();// 调用函数,页面刷新也会刷新验证码
  // 点击刷新验证码
  oDiv.onclick = function(){
    getCode();
  }
  </script>
</body>
</html>

总结

以上所述是小编给大家介绍的基于JS实现一个随机生成验证码功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
setInterval计时器不准的问题解决方法
May 08 Javascript
js实现按Ctrl+Enter发送效果
Sep 18 Javascript
jQuery中 attr() 方法使用小结
May 03 Javascript
js实现文字垂直滚动和鼠标悬停效果
Dec 31 Javascript
Javascript中匿名函数的调用与写法实例详解(多种)
Jan 26 Javascript
详谈JS中实现种子随机数及作用
Jul 19 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
Apr 13 Javascript
VueJS组件之间通过props交互及验证的方式
Sep 04 Javascript
js中DOM事件绑定分析
Mar 18 Javascript
jQuery实现为table表格动态添加或删除tr功能示例
Feb 19 jQuery
基于vue的tab-list类目切换商品列表组件的示例代码
Feb 14 Javascript
vue组件冲突之引用另一个组件出现组件不显示的问题
Apr 13 Vue.js
微信小程序mpvue点击按钮获取button值的方法
May 29 #Javascript
深入了解响应式React Native Echarts组件
May 29 #Javascript
node将geojson转shp返回给前端的实现方法
May 29 #Javascript
node学习笔记之读写文件与开启第一个web服务器操作示例
May 29 #Javascript
关于element-ui的隐藏组件el-scrollbar的使用
May 29 #Javascript
JS学习笔记之数组去重实现方法小结
May 29 #Javascript
基于Vue实现电商SKU组合算法问题
May 29 #Javascript
You might like
用PHP编程开发“虚拟域名”系统
2006/10/09 PHP
mysql limit查询优化分析
2008/11/12 PHP
php cli 方式 在crotab中运行解决
2010/02/08 PHP
php中socket通信机制实例详解
2015/01/03 PHP
PHP中使用break跳出多重循环代码实例
2015/01/21 PHP
php将数组转换成csv格式文件输出的方法
2015/03/14 PHP
javascript 异步页面查询实现代码(asp.net)
2010/05/26 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
2016/06/06 Javascript
JS实现针对给定时间的倒计时功能示例
2017/04/11 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
微信小程序ajax实现请求服务器数据及模版遍历数据功能示例
2017/12/15 Javascript
详解微信小程序回到顶部的两种方式
2019/05/09 Javascript
layui form表单提交后实现自动刷新
2019/10/25 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
Python使用functools实现注解同步方法
2018/02/06 Python
对python中的pop函数和append函数详解
2018/05/04 Python
python matlibplot绘制多条曲线图
2021/02/19 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
Django 多环境配置详解
2019/05/14 Python
python处理自动化任务之同时批量修改word里面的内容的方法
2019/08/23 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
Python创建临时文件和文件夹
2020/08/05 Python
Python连接mysql方法及常用参数
2020/09/01 Python
Java程序员面试题
2016/09/27 面试题
司机的工作范围及职责
2013/11/13 职场文书
最新茶叶店创业计划书
2014/01/14 职场文书
关于运动会的稿件
2014/02/02 职场文书
最常使用的求职信
2014/05/25 职场文书
自主招生推荐信怎么写
2015/03/26 职场文书
小学班主任教育随笔
2015/08/15 职场文书
Nginx配置80端口访问8080及项目名地址方法解析
2021/03/31 Servers
vue递归实现树形组件
2022/07/15 Vue.js