<!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
js实现验证码
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 不说废话,看这个文档的大部分都是程序员,所以直接上代码了。 首先写了一个 CookieUtils.tsx 工具类 ...