我想為我的網站創建一個計數器,該計數器增加到一個數字,但在一年后達到該數字。
例如,計數器從 0 開始,其目標編號為 35340340,因此計數器應在一年后達到該編號。
我一直在嘗試,我可以創建一個影片計數器,它需要 31,556,900,000 毫秒才能達到目標數字,但是每次加載頁面時它都會重置為 0,所以我不知道是否可以指示日期是用停機計數器完成的,但用一個上升的計數器來完成,而不是基于秒和分鐘。
uj5u.com熱心網友回復:
你知道什么時候設定計數器
所以你每次加載時都可以做這個計算
請注意,如果在特定時間達到該數字很重要,則需要考慮時區
const targetNumber = 35340340;
const speed = 100; // milliseconds
const startDate = new Date(2021,11,16,15,0,0,0); // normalise at 15:00 - here yesterday
const aYearLater = new Date(startDate.getFullYear() 1,startDate.getMonth(),startDate.getDate(),15,0,0,0);
const diffMS = aYearLater.getTime() - startDate.getTime(); // 365 or 366 in ms
const ticksPerMS = targetNumber/diffMS;
// console.log(ticksPerMS);
const now = new Date();
const diffFromStart = now.getTime() - startDate.getTime();
let counterNow = (diffFromStart*ticksPerMS)
const counter = document.getElementById("counter");
setInterval(function() {
counter.innerText = (counterNow = (ticksPerMS*speed)).toFixed(2)
},speed)
<span id="counter"></span>
從您的評論更新
const initialNumber = 99.990867579909;
const targetFinal = 100.000000000000;
const targetNumber = targetFinal - initialNumber;
const speed = 100; // milliseconds
const startDate = new Date(2021, 11, 16, 15, 0, 0, 0); // normalise at 15:00 - here yesterday
const aYearLater = new Date(startDate.getFullYear() 1, startDate.getMonth(), startDate.getDate(), 15, 0, 0, 0);
const diffMS = aYearLater.getTime() - startDate.getTime(); // 365 or 366 in ms
const ticksPerMS = targetNumber / diffMS;
// console.log(ticksPerMS);
const now = new Date();
const diffFromStart = now.getTime() - startDate.getTime();
let counterNow = (diffFromStart * ticksPerMS)
const counter = document.getElementById("counter");
let tId = setInterval(function() {
counter.innerText = (counterNow = (ticksPerMS * speed)).toFixed(12)
if (counterNow >= targetFinal) clearInterval(tId);
}, speed)
<span id="counter"></span>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/384231.html
標籤:javascript 查询
上一篇:如何觸發表格選項卡中的鏈接?
