【问题标题】:Javascript count up onload load functionJavascript 计数 onload 加载函数
【发布时间】:2016-03-09 06:11:39
【问题描述】:

我正在创建一个脚本,它将刷新显示在我网站顶部的“查看者”计数。

Javascript:

<script type="text/javascript">
window.onload = function(){
var auto_refresh = setInterval(
function ()
{
$('#viewers').load('viewers.php');
}, 5000);
}
</script>

HTML:

<span id="viewers">0</span>

viewers.php 输出:

100

我想添加一个“向上/向下计数”效果,例如,如果 viewers.php 输出 200,它会在 5000 毫秒后向上计数,如果这个计数下降到 50,则 100 将倒数到 50。

感谢您的帮助!

【问题讨论】:

  • 您希望它在 5000 毫秒的跨度内从当前观众数 # 到 viewers.php 给出的数字?
  • viewers.php 中有什么?
  • 正确!计数持续时间为 4 秒。 500ms 只是刷新状态之间的时间。
  • Adam,它已连接到数据库,现在只是回显一个数字值。
  • 这个问题写得非常混乱。请edit提供更详细和更清晰的问题解释。

标签: javascript count load onload effect


【解决方案1】:

这是一种解决方案,可以在给定的延迟时间内对新的观看者数量进行递增或递减计数。它似乎运行有点慢,可能是由于我的代码在 setInterval 中的延迟。

只要您想更新计数,只需拨打setViewers

<script type="text/javascript">
window.onload = function(){


var delay = 4000;
var viewers = $("#viewers");
var auto_refresh = setInterval(
function ()
{
  var curViewers = Number(viewers.html())
  $('#viewers').load('viewers.php', function(){
    var newViewers = Number(viewers.html());
    setViewers(curViewers, newViewers);
  });

}, 5000);



function setViewers(currentNum, newNum){
  if(currentNum == newNum) return;
  var updateSpeed = delay / Math.abs(currentNum - newNum);
  var countDir = currentNum > newNum ? -1 : 1;
  var timer = setInterval(function(){    
    currentNum += countDir;
    viewers.text(currentNum);
    if(currentNum == newNum) clearInterval(timer);
  }, updateSpeed);
}
}
</script>

【讨论】:

  • 感谢您的代码,我在将其与 load('viewers.php') 部分链接时遇到了一些问题。如何从 div 中获取 currentNum 并从 load 函数中获取 newNum,然后调用它?
  • 老实说,我对 php 或 jquery 的 load 不是很熟悉,但我以一种可能的方式进行了编辑以调用我的代码。还没有测试,所以可能还不太对。
猜你喜欢
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-20
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
相关资源
最近更新 更多