zoukankan      html  css  js  c++  java
  • 以 “月” 为单位的可以翻页的效果 显示为 2016年01月

    先上效果图:

    动作:向前翻一页,显示为 201年12月;向后翻一页,显示为  2016年1月

    动作2:日期与数据关联

    previousDiv  上一页ID
    nextDiv      下一页ID
    headerTitleDiv    日期容器ID   

    日期是需要放在input里的, ID为title


    html:
    <!--图表的容器-->
            <div id="scroll_view" class="mui-scroll-wrapper" style="top:44px">
                <div id="warp" class="mui-scroll">
                    <div id="emptyDiv" class="emptyDiv" style="display: none;">暂无数据</div>
                    <div id="pie_information_month" class="ReportDiv"></div>
                    <div id="bar_information_month" class="ReportDiv"></div>
                </div>
            </div>

    注意:“月”的input的类型为month

     
    下面是JS部分:
    1、重置上一页的监听事件并给DIV添加样式

    function resetPreviousEvent(){
        previousDiv.className = 'previousImgDiv';
        previousDiv.removeEventListener('tap',previousDivTapEvent);
        previousDiv.addEventListener('tap',previousDivTapEvent);
    }
    
    

    2、重置下一页的监听事件并给DIV添加样式

    
    
    function resetNextEvent(){
        nextDiv.className = 'nextImgDiv';
        nextDiv.removeEventListener('tap',nextDivTapEvent);
        nextDiv.addEventListener('tap',nextDivTapEvent);
    }
    
    

    3、上一页的监听事件及事件中调用数据

    
    
    function previousDivTapEvent(){
        resetNestEvent();
        title.value = getPreviousDate(title.value);
        fetchDate1();
    }
    
    

    4、下一页的监听事件及事件中调用数据,判断,如果下一页有数据,则为下一页添加监听事件,否则,不操作

    
    
    function nextDivTapEvent(){
        title.value = getNextDate(title.value);
        fetchDate1();
        if(checkCanDoNext()){
            nextDiv.addEventListener('tap',nextDivTapEvent);
            return;
        }
    }
    
    

    5、返回自定义日期

    1. 定义当前日期,并赋值,为系统时间
    2. 定义当前年份,并从系统时间中获取年份
    3. 定义当前月份,并从系统时间中获取当月天数,如果为31天,则加1;并给获取到的月份的返回值做判断,如果小于10,则在月前加0
    4. 返回  2016年01月的格式
    
    
    function convertDateStr(date){
        var currentDate = date;
        var year = currentDate.getFullYear();
        var month = getLength2(currentDate.getMonth()+1);
        return year+"-"+month;
    }
    
    

    6、获取上一月并返回

    1. 定义当前日期,当前日期从系统时间中返回
    2. 返回一个新的日期,这个日期为上一页的日期
    3. 为新的日期设置当前日期
    4. 为新的日期设置当前返回的上一月的月份,需要从当前月份中   -1
    5. 返回当前日期为上一页的新日期
    
    
    function getPreviousDate(date){
        var currentDate = Date.parse(date);
        var tmpDate = new Date();
        tmpDate.setTime(currentDate);
        tmpDate.setMonth(tmpDate.getMonth()-1);
        return convertDateStr(tmpDate);
    }
    
    

    7、获取下一月并返回

    1. 方法同上,区别是,在当前日期   +1
    
    
    function getNextDate(date){
        var currentDate = Date.parse(date);
        var tmpDate = new Date();
        tmpDate.setTime(currentDate);
        tmpDate.setMonth(tmpDate.getMonth()+1);
        return convertDateStr(tmpDate);
    }
    
    

    8、判断,当前日期是否小于指定日期,这个指定日期就是上一页或者是下一页,返回布尔值

    1. 如果当前日期小于指定日期,则为true
    
    
    function checkDate(dateStr){
        var currentDate = new Date();
        var selectDate = Date.parse(dateStr);
        var tmpDate = new Date();
        tmpDate.setTime(selectDate);
        var currentDateCount = currentDate.getFullYear()*100 + currentDate.getMonth();
        var selectDateCount = tmpDate.getFullYear()*100 + tmpDate.getMonth();
        return currentDateCount <= selectDateCount;
    }
    
    

    9、判断,当前页是否可以点击下一页,并打开下一页数据

    
    
    function checkCanDoNext(){
        if(checkDate(title.value)){
            title.value = convertDateStr(new Date());
            nextDiv.className = 'nextImgDiv';
            nextDiv.removeEventListener('tap',nextDivTapEvent);
            return true;
        }else{
            resetNestEvent();
            nextDiv.className = 'nextImgDiv';
            return false;
        }
    }
    
    

    10、重置监听下一页事件

    
    
    function resetNestEvent(){
        nextDiv.removeEventListener('tap',nextDivTapEvent);
        nextDiv.addEventListener('tap',nextDivTapEvent);
    }
    
    
    共有10步,如果哪位大侠可以有比这个更简单的方法,可以在下面留言,供大家参考,谢谢

    上一页与下一页用到的CLASS样式:
    .previousImgDiv{
        position: relative;
        float: left;
        height:30px;
        width: 30px;
        top:7px;
        left:8px;
        background-image: url('../../img/integral_active/icon_previous.png');
        -moz-background-size:100% 100%;
        background-size:100% 100%;
    }
    
    .nextImgDiv{
        position: relative;
        float: right;
        height:30px;
        width: 30px;
        top:7px;
        right:8px;
        background-image: url('../../img/integral_active/icon_next.png');
        -moz-background-size:100% 100%;
        background-size:100% 100%;
    }
    
    .titleDiv{
        position: relative;
        width: 200px;
        margin: auto;
        height: 44px;
        line-height: 44px;
        vertical-align: middle;
        text-align: center;
        color:#787A7F;
    }
    
    .emptyDiv{
        position:absolute;
        margin:auto;
        height:350px;
        width:100%;
        text-align:center;
        line-height:300px;
        display: none;
    }
    
    
    
    
    
  • 相关阅读:
    luogu P4852 yyf hates choukapai 单调队列优化dp
    luogu P2605 [ZJOI2010]基站选址 线段树优化dp
    7.9 NOI模拟赛 数列 交互 高精 字符串
    AGC 043 C
    7.9 NOI模拟赛 A.图 构造 dfs树 二分图
    7.9 NOI模拟赛 C.走路 背包 dp 特异性
    2020 高考记
    7.6 NOI模拟赛 灯 根号分治
    python-08-元组
    python-07-列表
  • 原文地址:https://www.cnblogs.com/baiyygynui/p/5124575.html
Copyright © 2011-2022 走看看