判断是否连续点击过快

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);
        }
    })
}
原文地址:https://www.cnblogs.com/alantao/p/7941933.html