js实现验证码

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style>
        .block{
            border: 1px solid black;
            width: 140px;
            height: 40px;
            line-height: 40px;
            text-align: center;
        }
        .btnk{
            color:blue;
            cursor: pointer;
        }
        .txt{
            display: inline-block;
            position: relative;
        }
    </style>
</head>
<body>
<div class="block">
</div>
<span class="btnk">看不清....</span>
<br>
<input id="yz" type="text">
<button id="btn">验证</button>
<script>
    var allnumber="";         //定义一个全局变量allnumber
    var b=document.getElementsByClassName("block")[0];    //获取class名为block的div元素
    var btnk=document.getElementsByClassName("btnk")[0];    //获取class名为btnk的span元素
    var yz=document.getElementById("yz");               //获取id名为yz的input元素
    var btn=document.getElementById("btn");               //获取id名为btn的button元素
 
    //添加验证按钮的点击事件
    btn.οnclick=function(){
        if(yz.value==allnumber.toLowerCase()){
            alert("成功");
        }
        else{
        //失败时提醒错误,并再次调用函数
            alert("验证码错误");
            randomNumber();
        }
    }
 
    //添加看不清span元素的点击事件
    btnk.οnclick=function(){
        randomNumber();
    }
 
    //调用函数
    randomNumber();
    //生成验证码
    function randomNumber(){
        allnumber="";      //每次执行函数时都清空之前的allnumber
        b.innerHTML="";    //每次执行函数时都清空之前的b.innerHTML
        //循环控制生成六位字符
        for(var i=0;i<6;i++){   
            var num=Math.random()*100;   //用随机数来控制生成数字,大写字母和小写字母的概率
            if(num<=50)   //生成数字的概率为50% 
            {
                var n=Math.floor(Math.random()*10);   //先把生成的随机数*10扩大为0~10再对其进行向下取整
                allnumber+=n;      //把n的值累加给到allnumber
                b.innerHTML+="<span class='txt'>"+n+"</span>";  //把n的值累加给b.innerHTML,在两边加上span标签
            }
            else if(num>50&&num<=80)    //生成大写字母的概率为30%
            {
                var n=String.fromCharCode(Math.floor(Math.random()*26+97)); //利用大写字母的ascii值来生成随机大写字母
                allnumber+=n;    
                b.innerHTML+="<span class='txt'>"+n+"</span>";
            }
            else{
                var n=String.fromCharCode(Math.floor(Math.random()*26+65)); //利用小写字母的ascii值来生成随机小写字母
                allnumber+=n;
                b.innerHTML+="<span class='txt'>"+n+"</span>";
            }
 
        }
        randomStyle();  //在randomNumber()中调用randomStyle()
    }
    //用来控制随机字符的样式
    function randomStyle(){
       var spn_t=document.getElementsByClassName("txt");  //获取span元素txt
        //循环控制每个字符的样式
        for(var i=0;i<spn_t.length;i++){
            spn_t[i].style.color="rgb("+Math.floor(Math.random()*225)+","+Math.floor(Math.random()*225)+","+Math.floor(Math.random()*225)+")"     //用随机的三位rgb值来控制字体的颜色
            spn_t[i].style.fontSize=(Math.random()*30+15)+"px";   
            spn_t[i].style.fontWeight=Math.random()*600+300;
            spn_t[i].style.transform="rotatez("+(Math.random()*90-45)+"+deg)"; //随机的翻转角度来控制字体的倾斜
        }
    }
 
</script>
</body>
</html>
————————————————
版权声明:本文为CSDN博主「yixiiii」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yigetongzi/article/details/81974545
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容