我希望每2.7秒将1加到一个值;我不希望它每次刷新页面时都重置
是否有一种方法可以增强以下代码,使之成为可能?我对php一无所知,也不了解JS,但是我想学习php,我觉得它可以是一个解决方案。
这是柜台的线。
<span id="counter" class="bladeometer" style="letter-spacing: 3px;">198567970</span>
这是运行它的代码。
var timer;
function startCount()
{
timer = setInterval(count,2700);
}
function count()
{
var el = document.getElementById('counter');
var currentNumber = parseFloat(el.innerHTML);
el.innerHTML = currentNumber+1;
}
发布于 2013-08-30 10:07:16
这完全可以通过Javascript来实现。页面刷新后,它将保持同步,甚至对所有访问该网站的用户都是一样的。
var el = document.getElementById('counter');
//Set the date of when it starts to February 3rd, 2013. Javascript counts months from 0-11
var startTime = Math.floor(new Date(2013, 1, 3) / 1000);
var startNumber = 200000000;
var timer = setInterval(function() {
var currentTime = Math.floor(new Date() / 1000);
var secondsSinceStart = currentTime - startTime;
el.innerHTML = Math.floor(startNumber + (secondsSinceStart / 2.7));
}, 2700);
它的工作方式是计算自计数器启动以来所经过的秒数,然后除以2.7,看看计数器的值应该是多少。我使用Math.floor()
,所以计数器中的数字是整数。
Date.time()
所做的是获取自时代以来的毫秒数(您可以在date)上阅读到它)。我把它除以1000,得到自那个时代以来的秒数,然后我把它加起来,所以这个数字是一个整数。
如果你需要任何帮助,了解它的任何部分,请随意问。
演示:http://codepen.io/skimberk1/pen/dbf41f6dae413a39bd05650ef8796319
发布于 2013-08-30 09:54:38
您可以使用服务器发送的事件。以下是http://www.html5rocks.com/en/tutorials/eventsource/basics/的解释和示例
发布于 2013-08-30 09:57:30
我想你希望这个计数器是全局的,而不是每个用户。你展示的方法不太好。如果使用AJAX或其他存储值的方法,它可能会起作用,但这并不是必要的。事实上,我觉得这是个愚蠢的解决方案。
由于计数器在不断增加,所以您需要找到始终存在的东西,并且可以从中计算计数器值。当然,我说的是时间。
弄清楚你的柜台什么时候会是零。那是你的参考时间。现在,每次打开页面时,使用(current time - reference time) * increase value
计算计数器,因此由于增量值是1 / 2.7
(谢谢马修),公式是(current time in seconds - reference time in seconds) / 2.7)
,就这样了!这是您的计数器需要在每次页面加载上获得的值。
这样,您的代码将在页面上实时更新计数器,而我给出的时间计算将确保计数器号“在窗帘后面”是正确的,以便当您刷新页面时,得到的值与您一直在页面时得到的值相同。只需确保您使用一个时区,并坚持使用它,以避免来自不同区域的用户具有不同的计数器值(略有不同,但仍然不需要这样做)。
的底线:使用您的代码在页面上更新计数器,并使用我向您展示的内容来确定页面加载时计数器的起始值。
https://stackoverflow.com/questions/18538760
复制相似问题