前端如何設置一天只能點擊一次的以及如何去判斷第二天0點刷新的一些問題


當需要在前端去判斷一天只能點擊一次,第二天0點重置的時候,該如何去解決呢?

一、首先你需要獲取第二天0點的時間,目前我的方法有兩種

1.原生

         var time= new Date();
         time.setDate(t.getDate() + 1);
         time.setHours(0);
         time.setMinutes(0);
         time.setSeconds(0);
         console.log(t.getTime())    //第二天0點以毫秒為單位的時間

2.引入moment.js

        var t = moment().format('x')//當前點擊時間
        var nextDate = moment().add(1, 'days').hours(0).minutes(0).seconds(0).format('x')//新一天的時間    

二、使用localStorage或者cookie去存儲一些數據設置過期時間為(第二天0點的時間 - 第一次點擊的時間)

 這里我用到的是localStorage,由於localStorage原型上自帶的屬性方法里沒有設置過期時間,需要自己封裝兩個方法用來存和取

         Storage.prototype.setExpire = (key, value, expire) => {  //設置存
            let obj = {
                data: value,           //要存的信息
                time: moment().format('x'),  //第一次的點擊時間
                expire: expire   //過期時間
            };
            localStorage.setItem(key, JSON.stringify(obj));  //以字符串的形式存到localStorage中
        }

        Storage.prototype.getExpire = key => {  //設置取
            let val = localStorage.getItem(key);   //
            if (!val) {
                return val;
            }
            val = JSON.parse(val);  //將字符串轉化成對象
           
            if (moment().format('x')-val.time > val.expire) {  //如果當前時間 - 第一次的時間 > 過期時間
                clearInterval(begin)   //清定時器
                localStorage.removeItem(key);  //移除localStorage
                /*
                  還可以去改變一些狀態值的true或false
               */
                return null;     //返回空
            }else{
               /*
                  還可以去改變一些狀態值的true或false
               */
                return val.data; //返回存的值
            }
            

        }
        localStorage.setExpire("token", '*********',nextDate-t) //
        
       var begin =window.setInterval(()=>{   //
            localStorage.getExpire("token")  //每一秒獲取一次localStorage
        },1000)
        
    }                 

注意:前端去控制一天只能點擊一次第二天0點刷新,簽到的問題是很不好完善的,因為localStorage你可以從瀏覽器中刪掉,存儲的按鈕狀態或者其他的信息就沒了,你又可以重新操作了,最好的方法還是后端去判斷,然后返給你一個狀態,你根據狀態去判斷按鈕的狀態

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM