您的位置:首页 > 其它

判断是否连续点击过快

2017-12-01 13:54 591 查看

1.方法一,用数组方法,自己乱想的。但不知道有没有性能问题,因为数组的长度会加大

function clicklikes(){
var clickOriginBox = $(".visit_count_text1");
var clickOrigin = clickOriginBox.find(".visit_good_btn2");
var itemTarget = clickOriginBox.find("ul li");
var arrAcount = [];
var oldTime;
var timeArr = [];
clickOrigin.on("click",function(){
oldTime = new Date().getTime();
timeArr.push(oldTime);              //每次时间push入数组中,然后比较数组最后两个值的差
var timeBucket = timeArr[timeArr.length-1] - timeArr[timeArr.length-2];         //时间差
if(timeBucket > 1000){
console.log("正常点击")
}else{
if(isNaN(timeBucket)){
console.log("第一次点击");
}else{
console.log("你点击太快了")
}
}
})
}

方法二,时间差,比较合理的方法

function clicklikes(){
var clickOriginBox = $(".visit_count_text1");
var clickOrigin = clickOriginBox.find(".visit_good_btn2");
var itemTarget = clickOriginBox.find("ul .li5");
var count = 0;          //点击次数
var firstTime = 0;      //第一次点击时间
var secondTime = 0;     //第二次点击时间
var timeBucket = 0;     //两次点击时间差
var flag = true;        //判断是第几次点击的状态

clickOrigin.on("click",moreClick);

function moreClick(){
var date = new Date();                                  //点击后首先获取当前时间
var seconds = date.getTime();                           //获取毫秒数
if(flag){                                               //前次点击
firstTime = seconds;                                //前次点击时间
flag = false;
}else{
secondTime = seconds;                               //时间赋给后次点击
flag = true;
}

timeBucket = Math.abs(secondTime - firstTime);          //时间差
// console.log(firstTime);
// console.log(secondTime);

if(secondTime == 0){                                    //如果是第一次点击,则执行以下代码
count++;
validClick(count)
}else{
if(timeBucket > 1000){                              //如果两次点击间隔大于5秒时;
count++;                                        //正常有效执行加1
validClick(count);
}else{
console.log("你他妈点击太快,赶去投胎啊!");  //如果两次点击间隔小于1秒,则执行以下代码
}
}
}

function validClick(num){
itemTarget.find("i").eq(0).text(num);
console.log("第" + count + "有效次点击!");
}
}

方法三,设置相邻两次点击的时间,比如点击一次后,3秒后才再能点击

function clicklikes(){
var clickOriginBox = $(".visit_count_text1");
var clickOrigin = clickOriginBox.find(".visit_good_btn2");
var itemTarget = clickOriginBox.find(".li5");
var count = 0;                                              //用来存储间隔时间
var total = 0;                                              //有效点击次数
var flag = null;                                            //用来存储定时器函数的返回值

function done(){                                            //被定时器函数不断的调用,来对count进行递减。
if(count == 0){                                         //如果count == 0,则停止定时器函数的执行
clearInterval(flag)
console.log("可以点击")
}else{                                                  //如果不等0,则减1操作
count = count - 1;
console.log("还有"+ count + "秒才可以点击")
}
}

clickOrigin.on("click",function(){
clearInterval(flag);
if(count == 0){
count = 3;                                          //设置10s可点击一次
itemTarget.find("i").eq(0).text(total++);
flag = setInterval(done,1000);                      //点击完后又执行done()函数
}else{                                                  //如果count不等于0,则
clearInterval(flag);
console.log("还需要" + count + "秒才能点击!")
flag = setInterval(done,1000);
}
})
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: