javaScript:倒计时设计

20 篇文章 0 订阅
6 篇文章 0 订阅
       做为后台开发人员,往往对前端技术了解甚少,开发过程中遇到比较棘手的前端问题经常会捉襟见肘,但勤能补拙,希望通过一点一滴的积累能让个人的前端水平有所提升吧

一,倒计时设计

       以下是试用的倒计时范例,有三个时间点:试用申请开始时间,试用申请结束时间,试用报告提交截止时间,要根据这三个时间点进入不同的倒计时阶段

HTML:

<span style="font-size:18px;"><span style="font-size:18px;"><c:if test="${!empty tryoutArray}"> 
        <div class="area-5" id="area-5">
            <div class="title-div"><img src="" height="66" width="1120"/></div>
            <div class="area-main">           
               <c:forEach items="${tryoutArray}" var="o">
               <c:choose>
               <c:when test="${o.get('status') == 1}">
	           <c:set var="btnClass" value="btn-1"/>
	           <c:set var="btnValue" value="立即申请"/>
               </c:when>
               <c:when test="${o.get('status') == 2}">
	           <c:set var="btnClass" value="btn-0"/>
	           <c:set var="btnValue" value="即将开始"/>	              
               </c:when>
               <c:when test="${o.get('status') == 4}">
	           <c:set var="btnClass" value="btn-2"/>
	           <c:set var="btnValue" value="体验中"/>
               </c:when>
               </c:choose>
                <div class="pic-txt pic-txta">
                   <div class="img-area"> 
                   <a href="${o.get('tryoutUrl')}" target="_blank">
                       <img src="${o.get('picUrl')}" width="680" height="340" alt="${o.get('name')}"> 
                   </a>
                   <!-- 倒计时 -->
                   <div class="time">
				   <div class="count-down count-downa count-down-fir" data-state="${o.get('status')}" data-startDate="${o.get('startDate')}" data-endDate="${o.get('endDate')}"></div>
				   <div class="count-down count-downa count-down-sec" data-state="${o.get('status')}" data-startDate="${o.get('endDate')}" data-endDate="${o.get('reportTime')}"></div>
		   </div>				  
                   <span class="end-time"> </span>
                   </div> 
                   <div class="txt-area"> 
                     <dl>
                       <dt> 
                         <a href="${o.get('tryoutUrl')}" target="_blank">${o.get("name")}</a> 
                       </dt>
                       <dd>                 
                         <div class="price"> 价值:<em>¥</em><em class="fs-24">${o.get("productPrice")}</em> </div>
                         <div class="provide"> 试用名额:<em class="fs-24 greenq-font">${o.get("tryNum")}</em>名 </div>
                         <div class="num"> 已申请:<em class="fs-24 greenq-font">${o.get("applyNum")}</em>人 </div> 
                       </dd>
                     </dl>
                     <p class="try-time">活动时间:${o.get("startDate")}--${o.get("endDate")}</p> 
                     <a href="${o.get('tryoutUrl')}" target="_blank" class="btn ${btnClass}">${btnValue}</a>
                    </div> 
                  </div>  
                 </c:forEach>                                
             </div>
          </div>
       </c:if> </span>

</span>

javaScript:

<span style="font-size:18px;"><!--倒计时js -->
<script src="http://js.3conline.com/min/temp/v1/dpl-$.countDown.js"></script>
<script type="text/javascript">
var itemLen = $(".count-down").length;
for ( var i = 0; i < itemLen; i++) {
    var itemT = $(".count-down").eq(i);
    var data_state = itemT.attr("data-state");
    countFunc_run(itemT, i, data_state, '${now}');
}

//倒计时
function countFunc_run(id, k, state, timeStamp){
  var btn = $(id).parent().parent().parent().find('.btn');//此处运用jQuery抓取html元素的方法获取按钮位置
  $(id).countdown({
    rootTime: timeStamp,
    // d:h:m:s(默认)、h:m:s、m:s
    willbe:{     
        format : function(time) {
             if($(id).hasClass('count-down-fir')){
                var timeText = (state == 2) ? "距申请开始还有" : "距申请结束还有";
                var str = "<span class='icon-count'></span>"
                        + timeText
                        + " : <em class='count-days'>"
                        + time.day
                        + "</em>天<em class='count-hours'>"
                        + time.hour
                        + "</em>时<em class='count-minutes'>"
                        + time.min
                        + "</em>分<em class='count-seconds'>"
                        + time.sec + "</em>秒";
                $(id).html(str);
                $(id).show();
             }         
        },
        callback:function() {        
             if($(id).hasClass('count-down-fir')){
                 $(btn).html("即将开始").addClass("btn-0");    
            }
        }
    },
    start:{
        format : function(time) {if($(id).hasClass('count-down-fir')){
            timeText = "距离申请结束还有";
            var str = "<span class='icon-count'></span>"
                + timeText
                + " : <em class='count-days'>"
                + time.day
                + "</em>天<em class='count-hours'>"
                + time.hour
                + "</em>时<em class='count-minutes'>"
                + time.min
                + "</em>分<em class='count-seconds'>"
                + time.sec + "</em>秒";
            $(id).html(str);
            $(id).show();
         }            
        },
       callback:function() {
            if($(id).hasClass('count-down-fir')){
                $(btn).html("立即申请").addClass("btn-1");
                $(btn).html("立即申请")[0].className = "btn btn-1";
            }
            if($(id).hasClass('count-down-sec')){
                 $(id).hide();//隐藏倒计时功能
                 $(btn).html("体验中").addClass("btn-2");    
            }
        }
    },
    end:{
        format : function(time) {
        },
        callback : function() {
            if($(id).hasClass('count-down-sec')){
                var parent = $(id).parent().parent().parent();
                $(parent).hide();
            }
            if($(id).hasClass('count-down-fir')){
                $(id).hide();
            }
        }
    }
})
}
</script></span>
<!--end -->

      如图为当前时间<试用申请开始时间,即将进入试用申请阶段,此时倒计时为距申请开始还有:xx天xx时xx分xx秒;试用申请开始时间<当前时间<试用申请结束时间时,倒计时为距申请结束还有:xx天xx时xx分xx秒;即将开始按钮变为立即申请;同理,试用申请结束时间<当前时间<报告提交截止时间,倒计时功能隐藏,立即申请按钮变为体验中



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值