我正在创建一个用户问候消息,该消息会根据时间向用户发送“早上好”,“下午好”和“晚上好”之类的消息。更改,并在消息更改的日期时间再次显示该消息。

例如,当您第一次在早上打开网站时,它将仅向您发送一次“早安”消息,然后每次刷新页面时才显示此问候消息,直到一天的下一部分开始,例如下午或晚上,反之亦然。

这可能吗?

最佳答案

是的,您可以使用简单的LocalStorage(用于维护最后一条消息显示的历史记录)和Java中的日期时间比较来做到这一点

<script>
    setInterval(greet , 1000*60);
    function greet(){

        var date = new Date();
        try{
            if(!localStorage.lastGreeted || !localStorage.lastGreetedPeriod)
                greetWithMessage(date);
            else if(getDate(localStorage.lastGreeted)!=getDate(date))
                greetWithMessage(date);
            else if(divideDayTime(date.getHours())!=localStorage.lastGreetedPeriod)
                greetWithMessage(date);
        }
        catch(err){

             greetWithMessage(date);
        }

    }



    function getDate(obj){
        if(!(obj instanceof Date) )
            obj = new Date(obj);
        return obj.getDate()+'-'+(1+obj.getMonth())+'-'+obj.getFullYear();
    }

    function divideDayTime(hours){
     //Update Message and It's Period Here
        if(hours<12)
            return 'MORNING';
        else if(hours>=12 && hours <=16)
            return 'AFTERNOON';
        else if(hours>16 && hours<=20)
            return "EVENING";
        else
            return "NIGHT";

    }
    function greetWithMessage(d){
        localStorage.lastGreeted=d;
        var message = localStorage.lastGreetedPeriod=divideDayTime(d.getHours());

        alert("Good "+ message);
    }


    </script>

09-10 01:24
查看更多