2016-12-30 69 views
-1

i的值應以5秒爲間隔增加到500。但我需要將前一天的總數添加到第二天。爲了簡單起見,我只需要在i的每日增量開始之前添加最大值。不過,我正在初始化爲0的增量,並將重置,無論最大添加到它。每天在午夜加最大值

什麼是最好的方式去做這件事? 到目前爲止,我的代碼如下。

<script type='text/javascript'> 
    var div = document.getElementById('count'); 
    var i = 0; 
    var count = 0; 
    var max = 500; 
    var d = new Date(); 
    // set d to midnight 
    d.setHours(0,0,0,0); 
    d.setMonth(0); 
    d.setDate(1); 
    d.setFullYear(2017); 
    var one_day=1000*60*60*24; 
    var today = new Date().getTime(); 
    var numberofdays = Math.round((today - d.getTime())/one_day); 


    function isPastMidnight() { 
     var currentTime = new Date().getTime(); 
     if ((currentTime - d.getTime()) > 0) { 
     return true; 
     } else { 
     return false; 
     } 
    } 
    function updateCount() { 
     var currentTime = new Date().getTime(); 
     if (!isPastMidnight()) { 
     document.getElementById('count').innerHTML = "Check back January 1, 2017."; 
     } 


    if (isPastMidnight()) { 
     if (numberofdays > 0 && today == d.getHours) {  
     addmax(); 

     } 
     } 
    if (isPastMidnight() && i < max) { 
     i = Math.floor((currentTime - d.getTime())/5000); 
     if (i > max) i = max; 
     document.getElementById('count').innerHTML = i; 
     } 
     if (i >= max) { 
     // Stop executing myself ("interval" is declared in global scope, so accessible from here) 
     clearInterval(interval); 
     } 
    } 
    updateCount(); 
    var interval = setInterval(updateCount, 1000); 
</script> 
+0

你能否更詳細地解釋你真正的問題? – Syntac

+0

我正在製作一個計數器,每5秒增加1,直到數字(i)達到500. – user7347402

+0

每天需要增加500,以便下一天增加。所以在1月。 2,我不應該再是0,而是500,因爲前一天的500是它的一部分。第三天,我將從1000開始,等等,每天增加1直到每日最大點擊500 – user7347402

回答

0

你需要計算的說,數量自1月1日和500繁殖,然後在5秒(或其他)的數量增加了500,並將其添加到計數。關於如何計算日期之間的日期以及對當前時間值進行數學處理有許多問題。

您的代碼似乎過於複雜,如果您不想在2017年1月1日之前啓動計數器,那麼只需測試日期是否在那之前。

/* Return number of whole days between dates. Sets 
 
** time to 00:00:00 so only measures whole days. 
 
** @param {Date} d0 - start date 
 
** @param {Date} d1 - end date 
 
** @returns {number} whole days between dates 
 
*/ 
 
function daysBetweenDates(startDate, endDate) { 
 
    var d0 = new Date(+startDate); 
 
    var d1 = new Date(+endDate); 
 
    return Math.round((d1.setHours(0,0,0,0) - d0.setHours(0,0,0,0))/8.64e7); 
 
} 
 

 
/* Return a value that is 500 * the number of days since 1 Jan of the current year 
 
** + 1 for each interval since 00:00:00 on the current day 
 
** @param {Date} date 
 
** @returns {number} 
 
*/ 
 
function getCurrentCount(date) { 
 
    // Don't run before 1 Jan 2017 
 
    if (date < new Date(2017,0,1)) return 'Too early...'; 
 

 
    // Get count for whole days since 1 Jan 2017 
 
    var count = 500 * daysBetweenDates(new Date(date.getFullYear(), 0), date); 
 

 
    // Find milliseconds since midnight at start of day 
 
    var dayPart = date - new Date(date).setHours(0,0,0,0) 
 

 
    // Add increments 
 
    var increment = 5000; 
 
    dayPart = Math.floor(dayPart % 8.64e7/increment); 
 

 
    // Increment by dayPart if less than 500, or 500 otherwise 
 
    count += dayPart > 500? 500 : dayPart; 
 

 
    return count; 
 
} 
 

 
// Some tests 
 
[new Date(),    // Now 
 
new Date(2017,0,1,0,30), // 2017-01-01 00:30:00 
 
new Date(2017,5,23,0,30) // 2017-06-23 00:30:00 
 
].forEach(function(d) { 
 
    console.log('Count for ' + d.toString() + 'is: ' + getCurrentCount(d)); 
 
});

+0

我在5分鐘前剛剛看到它,然後纔看到它。謝謝你的幫助 – user7347402

0

倍增天最大變量,並將其添加到我的數學聲明。因此,第一天從0開始遞增,而不是500,我把它放到一個if語句中,如果天數大於0,它將只允許它執行。 再次感謝!