3

我想每 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;

}
4

4 回答 4

1

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

于 2013-08-30T17:54:38.377 回答
1

我假设您希望这个计数器是全局的,而不是每个用户的。您展示的方法并不好。如果您使用 AJAX 或其他一些存储值的方法,它可能会起作用,但这并不是必需的。事实上,我认为这是一个愚蠢的解决方案。

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

弄清楚你的计数器在什么时候为零。将其设为您的参考时间。现在,每次打开页面时,使用 计算计数器(current time - reference time) * increase value,所以由于增加值是1 / 2.7(感谢 Matthew),所以公式就是(current time in seconds - reference time in seconds) / 2.7)这样!这是您的计数器在每次页面加载时需要获得的值。

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

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

于 2013-08-30T17:57:30.683 回答
0

这可以纯粹使用 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()是获取自 Epoch 以来的毫秒数(您可以在 http://en.m.wikipedia.org/wiki/Epoch_(reference_date)阅读有关它的信息)。我将它除以 1000 以获得自 Epoch 以来的秒数,然后我将其取底,这样该数字就是一个整数。

如果您需要任何帮助来理解它的任何部分,请随时提出。

演示:http ://codepen.io/skimberk1/pen/dbf41f6dae413a39bd05650ef8796319

于 2013-08-30T18:07:16.840 回答
0

localStorage允许您在每台计算机的页面加载之间保留数据

// load the time from what was saved, or if absent, pick 0
var time = localStorage['timer'] || 0;
var el = document.getElementById('counter');

var timerId;

function startCount() {
    timerId = setInterval(function() {
        time = time + 1;
        localStorage['timer'] = time;
        el.textContent = time;
    }, 2700);
}
于 2013-08-30T17:52:28.053 回答