2014-01-27 2 views
0

Я пытаюсь сделать обратный отсчет аукциона для моего веб-приложения, но единственный обратный отсчет, который работает, является последним, как я могу решить эту проблему, я попытался использовать точки останова браузера, но без результата все же.Аукцион Countdown jQuery

 function deployTimersSearch() { 
     var nb = $("div.productFull").find("div.data_exptag").length; 

     var dia = ""; 
     var mes = ""; 
     var ano = ""; 
     var hora = ""; 
     var minutos = ""; 
     var segundos = ""; 

     var arrayContadores = new Array(nb); 

     for (var i = 0; i < nb; i++) { 
      dia = $("div.productFull").find("div#diatag" + i).text(); 
      mes = $("div.productFull").find("div#mestag" + i).text(); 
      ano = $("div.productFull").find("div#anotag" + i).text(); 
      hora = $("div.productFull").find("div#horatag" + i).text(); 
      minutos = $("div.productFull").find("div#minutotag" + i).text(); 
      segundos = "00"; 

      arrayContadores[i] = $("div#countDowntag" + i).countdown(ano, mes, dia, hora, minutos, segundos); 
      arrayContadores[i].start(); 
     } 

    } 

ПОКА ЗДЕСЬ ЭТО НЕ РАБОТАЕТ FINE

Я думаю, что проблема в ЗДЕСЬ:

 <script> 
     var before = ""; 
     var montharray = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); 
     var theyear, themonth, theday, thehour, theminutes, theseconds; 

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

      var start = function (yr, mes, d, h, m, s) { 
       theyear = yr; 
       themonth = mes; 
       theday = d; 
       thehour = h; 
       theminutes = m; 
       theseconds = 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; 

       var futurestring = montharray[mes - 1] + " " + d + ", " + yr + " " + thehour + ":" + theminutes + ":" + theseconds; 

       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) { 
        alert("ended"); 
        return; 
       } else $that.html("<span><strong>" + dday + "</strong><span> Days | " + "<span><strong>" + dhour + "</strong></span> Hours | " + "<span><strong>" + dmin + "</strong></span> Minutes"); 

       setTimeout(function() { 
        start(theyear, themonth, theday, thehour, theminutes, theseconds); 
       }, 1000); 
      } 
      return { 
       start: function() { 
        start(yr, mes, d, h, m, s); 
       }, 
       addTime: function (ms) { 
        delta += ms; 
       } 
      } 
     }; 
     </script> 

ответ

0

Проблема заключается в том, что вы ommiting уаг ключевое слово при объявлении переменных, таким образом, они объявлены глобальный и общий между таймерами. Это должно работать (jsfiddle):

var $that = $(this); 
... 

var theyear = yr; 
var themonth = mes; 
var theday = d; 
var thehour = h; 
var theminutes = m; 
var theseconds = s; 
... 

var dd = Date.parse(futurestring) - Date.parse(todaystring) + delta; 

var dday = Math.floor(dd/(60 * 60 * 1000 * 24) * 1); 
var dhour = Math.floor((dd % (60 * 60 * 1000 * 24))/(60 * 60 * 1000) * 1); 
var dmin = Math.floor(((dd % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000))/(60 * 1000) * 1); 
var dsec = Math.floor((((dd % (60 * 60 * 1000 * 24)) % (60 * 60 * 1000)) % (60 * 1000))/1000 * 1); 
Смежные вопросы