拍卖网站的Javascript倒计时计时器

时间:2013-07-26 18:16:32

标签: javascript timer countdowntimer

我正在建造和拍卖网站,每个产品都附有一个倒数计时器。

我从这里得到了一个工作脚本(stackoverflow) - > how to make countdown timer for bidding website

这是我的代码

<script>
    var before = ""
    var current = "Ended"
    var montharray = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");

    jQuery.fn.countdown = function(yr, m, d) {
        $that = $(this);
        theyear = yr;
        themonth = m;
        theday = d;
        var today = new Date();
        var todayy = today.getYear();
        if (todayy < 1000)
            todayy += 1900;
        var todaym = today.getMonth();
        var todayd = today.getDate();
        var todayh = today.getHours();
        var todaymin = today.getMinutes();
        var todaysec = today.getSeconds();

        var todaystring = montharray[todaym] + " " + todayd + ", " + todayy + " " + todayh + ":" + todaymin + ":" + todaysec

        futurestring = montharray[m - 1] + " " + d + ", " + yr;
        dd = Date.parse(futurestring) - Date.parse(todaystring);
        dday = Math.floor(dd / (60 * 60 * 1000 * 24) * 1);
        dhour = Math.floor((dd % (60 * 60 * 1000 * 24)) / (60 * 60 * 1000) * 1);
        dmin = Math.floor(((dd % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) / (60 * 1000) * 1);
        dsec = Math.floor((((dd % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) % (60 * 1000)) / 1000 * 1);

        if (dday < 0 && dhour < 0 && dmin < 0 && dsec < 1) {
            $that.val(current);
            return;
        }
        else
            $that.val(dday + "Days, " + dhour + ":" + dmin + ":" + dsec + before);
        setTimeout(function() {
            $that.countdown(theyear, themonth, theday);
        }, 1000);
    };
</script>

<input type="text" id="6" style="width: 900px">
<script>        
    $("#6").countdown(2011, 7, 27);
</script>

我的问题是如何为此增加时间?我在javascript中没有那么经验来操纵它与时间一起工作

2 个答案:

答案 0 :(得分:1)

var before = ""
var current = "Ended"
var montharray = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");


jQuery.fn.countdown = function (yr, m, d) {
    $that = $(this);
    var delta = 0;

    var start = function (yr, m, d) {
        theyear = yr;
        themonth = m;
        theday = d;

        var today = new Date();
        var todayy = today.getYear();
        if (todayy < 1000) todayy += 1900;
        var todaym = today.getMonth();
        var todayd = today.getDate();
        var todayh = today.getHours();
        var todaymin = today.getMinutes();
        var todaysec = today.getSeconds();

        var todaystring = montharray[todaym] + " " + todayd + ", " + todayy + " " + todayh + ":" + todaymin + ":" + todaysec

        futurestring = montharray[m - 1] + " " + d + ", " + yr;
        dd = Date.parse(futurestring) - Date.parse(todaystring) + delta;
        dday = Math.floor(dd / (60 * 60 * 1000 * 24) * 1);
        dhour = Math.floor((dd % (60 * 60 * 1000 * 24)) / (60 * 60 * 1000) * 1);
        dmin = Math.floor(((dd % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) / (60 * 1000) * 1);
        dsec = Math.floor((((dd % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) % (60 * 1000)) / 1000 * 1);

        if (dday < 0 && dhour < 0 && dmin < 0 && dsec < 1) {
            $that.val(current);
            return;
        } else $that.val(dday + "Days, " + dhour + ":" + dmin + ":" + dsec + before);

        setTimeout(function () {
            start(theyear, themonth, theday);
        }, 1000);
    }
    return {
        start: function () {
            start(yr, m, d);
        },
        addTime: function (ms) {
            delta += ms;
            console.log(delta);
        }
    }
};

使用:

var cd = $("#6").countdown(2013, 7, 28);
cd.start();
cd.addTime(100000); //add time 

FIDDLE

答案 1 :(得分:0)

得到了解决方案

<script>
var before = ""
var current = "Ended"
var montharray = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");

jQuery.fn.countdown = function(yr, m, d, h, min, s) {
    $that = $(this);
    theyear = yr;
    themonth = m;
    theday = d;
    thehour = h;
    theminute = min;
    thesecond = s;

    var today = new Date();
    var todayy = today.getYear();
    if (todayy < 1000)
        todayy += 1900;
    var todaym = today.getMonth();
    var todayd = today.getDate();
    var todayh = today.getHours();
    var todaymin = today.getMinutes();
    var todaysec = today.getSeconds();

    var todaystring = montharray[todaym] + " " + todayd + ", " + todayy + " " + todayh + ":" + todaymin + ":" + todaysec;
    futurestring = montharray[m - 1] + " " + d + ", " + yr + " " + h + ":" + min + ":" + s;
    //console.log(futurestring);
    dd = Date.parse(futurestring) - Date.parse(todaystring);
    dday = Math.floor(dd / (60 * 60 * 1000 * 24) * 1);
    dhour = Math.floor((dd % (60 * 60 * 1000 * 24)) / (60 * 60 * 1000) * 1);
    dmin = Math.floor(((dd % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) / (60 * 1000) * 1);
    dsec = Math.floor((((dd % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) % (60 * 1000)) / 1000 * 1);

    if (dday < 0 && dhour < 0 && dmin < 0 && dsec < 1) {
        $that.text(current);
        return;
    }
    else {
        $that.text(dday + "Days " + dhour + ":" + dmin + ":" + dsec + before);
    }

    setTimeout(function() {
        $that.countdown(theyear, themonth, theday, thehour, theminute, thesecond);
    }, 1000);
};
</script>
<input type="text" id="6" style="width: 900px">
<script>        
$("#6").countdown(2011, 7, 27, 12, 13, 12);
</script>