首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >跨页面刷新保存计数器值

跨页面刷新保存计数器值
EN

Stack Overflow用户
提问于 2013-08-30 17:50:00
回答 4查看 424关注 0票数 3

我希望每2.7秒将1加到一个值;我不希望它每次刷新页面时都重置

是否有一种方法可以增强以下代码,使之成为可能?我对php一无所知,也不了解JS,但是我想学习php,我觉得它可以是一个解决方案。

这是柜台的线。

代码语言:javascript
运行
复制
<span id="counter" class="bladeometer" style="letter-spacing: 3px;">198567970</span>

这是运行它的代码。

代码语言:javascript
运行
复制
var timer;


function startCount()
{
timer = setInterval(count,2700);
}
function count()
{
var el = document.getElementById('counter');
var currentNumber = parseFloat(el.innerHTML);
el.innerHTML = currentNumber+1;

}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-30 18:07:16

这完全可以通过Javascript来实现。页面刷新后,它将保持同步,甚至对所有访问该网站的用户都是一样的。

代码语言: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

票数 0
EN

Stack Overflow用户

发布于 2013-08-30 17:54:38

您可以使用服务器发送的事件。以下是http://www.html5rocks.com/en/tutorials/eventsource/basics/的解释和示例

票数 1
EN

Stack Overflow用户

发布于 2013-08-30 17:57:30

我想你希望这个计数器是全局的,而不是每个用户。你展示的方法不太好。如果使用AJAX或其他存储值的方法,它可能会起作用,但这并不是必要的。事实上,我觉得这是个愚蠢的解决方案。

由于计数器在不断增加,所以您需要找到始终存在的东西,并且可以从中计算计数器值。当然,我说的是时间。

弄清楚你的柜台什么时候会是零。那是你的参考时间。现在,每次打开页面时,使用(current time - reference time) * increase value计算计数器,因此由于增量值是1 / 2.7 (谢谢马修),公式是(current time in seconds - reference time in seconds) / 2.7),就这样了!这是您的计数器需要在每次页面加载上获得的值。

这样,您的代码将在页面上实时更新计数器,而我给出的时间计算将确保计数器号“在窗帘后面”是正确的,以便当您刷新页面时,得到的值与您一直在页面时得到的值相同。只需确保您使用一个时区,并坚持使用它,以避免来自不同区域的用户具有不同的计数器值(略有不同,但仍然不需要这样做)。

的底线:使用您的代码在页面上更新计数器,并使用我向您展示的内容来确定页面加载时计数器的起始值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18538760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档