基于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 相关文章推荐
JavaScript获取GridView中用户点击控件的行号,列号
Apr 14 Javascript
JavaScript中关于indexOf的使用方法与问题小结
Aug 05 Javascript
json数据的列循环示例
Sep 06 Javascript
初识Node.js
Mar 20 Javascript
分享javascript计算时间差的示例代码
Mar 19 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
Aug 20 Javascript
移动适配的几种方案(三种方案)
Nov 25 Javascript
基于JS实现移动端左滑删除功能
Jul 28 Javascript
Angular CLI在Angular项目中如何使用scss详解
Apr 10 Javascript
JavaScript事件委托实现原理及优点进行
Aug 29 Javascript
详解webpack的文件监听实现(热更新)
Sep 11 Javascript
el-table-column 内容不自动换行的解决方法
Aug 14 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
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
php网站地图生成类示例
2014/01/13 PHP
解决ThinkPHP关闭调试模式时报错的问题汇总
2015/04/22 PHP
jQuery图片的展开和收缩实现代码
2013/04/16 Javascript
ComboBox 和 DateField 在IE下消失的解决方法
2013/08/30 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
2016/01/25 Javascript
详解Matlab中 sort 函数用法
2016/03/20 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
javascript中replace使用方法总结
2017/03/01 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
2017/12/14 Javascript
使用bootstrap实现下拉框搜索功能的实例讲解
2018/08/10 Javascript
Vue2.2.0+新特性整理及注意事项
2018/08/22 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
2020/06/15 Javascript
Python中集合类型(set)学习小结
2015/01/28 Python
Python实现将HTML转换成doc格式文件的方法示例
2017/11/20 Python
python中reader的next用法
2018/07/24 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
2020/07/01 Python
python 中 .py文件 转 .pyd文件的操作
2021/03/04 Python
墨西哥运动服饰和鞋网上商店:Netshoes墨西哥
2016/07/28 全球购物
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
Gibson London官网:以地道的英国男装而著称
2019/12/06 全球购物
编程实现去掉XML的重复结点
2014/05/28 面试题
销售文员的岗位职责
2013/11/20 职场文书
大学军训感言300字
2014/03/09 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
就业指导讲座心得体会
2016/01/15 职场文书
导游词之上海豫园
2019/10/24 职场文书
浅谈如何提高PHP代码的质量
2021/05/28 PHP
Pygame如何使用精灵和碰撞检测
2021/11/17 Python