jq实现竞拍倒计时

1jq的效果代码

//全局变量用于存储当前时间
var nows;

function rightZeroStr(v) {
    if (v < 10) {
        return "0" + v;
    }
    return v + "";
}
//计时  每10秒中为当前时间+10
setInterval(function () {
    nows =parseInt(nows) + 10;
}, 10);
//ajax.post 向服务器请求得到当前的服务器时间
function syncTime() {
    var url = "Handler/Seckil.ashx?t=" + new Date().getTime();
    $.post(url, { action: "now" }, function (response) {
        nows = response.nows || new Date().getTime();
    });
}
//倒计时  参数arg存放倒计时的标签名称 id 或者class
function lxfEndtime(arg) {
    $(arg).each(function () {
        var lxfday = $(this).attr("lxfday"); //用来判断是否显示天数的变量
        var endtime = new Date($(this).attr("endtime")).getTime(); //取结束日期(毫秒值)
        var nowtime = nows;        //今天的日期(毫秒值)
        var starttime = new Date($(this).attr("starttime")).getTime();
         //开始时间和当时时间作比较 判断是开始 技术还是正在进行中
        if (starttime >= nowtime) {
            $(this).html("活动即将开始")
        }
        if (endtime <= nowtime) {
            $(this).html("活动已经结束"); //如果结束日期小于当前日期就提示过期啦
        }
        if (starttime < nowtime && endtime > nowtime) {
            var youtime = endtime - nowtime; //还有多久(毫秒值)
            var seconds = youtime / 1000;
            var minutes = Math.floor(seconds / 60);
            var hours = Math.floor(minutes / 60);
            var days = Math.floor(hours / 24);
            var CDay = days;
            var CHour = CDay * 12 + hours % 24;
            var CMinute = minutes % 60;
            var CSecond = Math.floor(seconds % 60); //"%"是取余运算,可以理解为60进一后取余数,然后只要余数。


            if ($(this).attr("lxfday") == "no") {
                $(this).html('<span class="countdown" millseconds="1188163453"> <strong class="tcd-h">' + CHour + '</strong>时<strong class="tcd-m">' + CMinute + '</strong>分 <strong class="tcd-s">' + CSecond + '</strong>秒 </span>');          //输出没有天数的数据
            } else {
                $(this).html('<span class="countdown" millseconds="1188163453"><strong class="tcd-d">' + days + '</strong><b>天</b> <strong class="tcd-h">' + CHour + '</strong> <i>:</i> <strong class="tcd-m">' + CMinute + '</strong><i>:</i> <strong class="tcd-s">' + CSecond + '</strong> </span>');          //输出有天数的数据
            }
        }
    });
    setTimeout("lxfEndtime('" + arg + "')", 1000);
};

2用到的handler

<%@ WebHandler Language="C#" Class="Seckil" %>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Text;
using System.Data;
public class Seckil : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        context.Response.ContentType = "text/json";
        string action = context.Request["action"];
        switch (action)
        {case "now":
                now(context);
                return;

        }
        context.Response.Write("Hello World");
    }public void now(HttpContext context)
    {
        Int64 retval = 0;
        DateTime st = new DateTime(1970, 1, 1);
        TimeSpan t = (DateTime.Now.ToUniversalTime() - st);
        retval = (Int64)(t.TotalMilliseconds + 0.5);
        context.Response.Write("{"nows":"" + retval + ""}");
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }

}

3前台页面代码

<html>
<script src="js/time.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function () { syncTime(); lxfEndtime(".box font"); }); </script>
<body>
<font color="#FF0000" endtime="' + dataitem.EndDate + '" starttime="' + dataitem.StartDate + '" lxfday="no"></font>
</body>
</html>
原文地址:https://www.cnblogs.com/liuchang/p/4342093.html