0

概述:我需要一个可以从插入的数字开始计数的计数器,它可以在没有用户的情况下继续计数,并且可以直观地显示网站内发生的计数。当我把它留在这里时,我会努力解决这个问题。任何帮助,将不胜感激。我计划将它打包到 Joomla 的一个模块中,并在不久的将来免费发布。

输入是:

  • 起始量以秒为单位更新的间隔, 为每个间隔添加的速率

用于构建计时器的 PHP 类

class Counter { 
    var $baserate;
    var $rate;
    var $start;
    var $seconds;
    var $now;
    var $month;
    var $day;
    var $year;
    var $saving;
    var $growthrate;

    function Counter($rate, $baserate,$seconds,$year,$day,$month) 
    { 
         $this->rate = $rate; 
         $this->base = $baserate;
     $this->seconds = $seconds;
     $this->year = $year;
     $this->day = $day;
     $this->month= $month;
     $this->carbonsaving(); 
     } 

     function carbonsaving() 
     { 
    $now = time();
    $start = mktime(0,0,0,$this->month,$this->day,$this->year);
    $growthrate = $this->rate * (60/$this->seconds);
        $saving = round(((($now - $start) * $growthrate) + $this->base));
    return $saving;
      } 

}
$count1 = new Counter(0,1, 2,2011,4,8); 
$count2 = new Counter(15,1, 1,2011,1,8); 
$width = 300;
$height = 350;
?>

Javascript 设置网页更新的时间间隔,调用函数获取初始值。 这些现在似乎不同步

var car1 =  <?php print($count1->carbonsaving()); ?>;
var car2 =  <?php print($count1->carbonsaving()); ?>;
function  incs1()
{
car1 = car1 + <?php print($count1->rate);?>  ;
document.getElementById("carb1").innerHTML=car1;
 }  
function  incs2()
{
car2 = car2 + <?php print($count2->rate);?>  ;
document.getElementById("carb2").innerHTML=car2;
} 
setInterval('incs1()', <?php print($count1->seconds);?> *1000 );
setInterval('incs2()', <?php print($count2->seconds);?> *1000 );

最后是计时器部分。我想摆脱加载,并在正文中添加一个 onpageload 事件,以确保在页面加载后立即加载数字(而不是等待间隔)。

<span id="carb1">Loading...</span><br />
<span id="carb2">Loading...</span><br />
<span id="carb3">Loading...</span>  

当前脚本:当前脚本由一个类运行,该类为页面上的三个计数器中的每一个创建一个对象。目前,柜台遇到了一些问题。

  1. 计数和间隔不同步。也就是说,脚本在可视网站上的刷新间隔与脚本中的计数不同步。我的逻辑在某些时候一定是错误的。

  2. 输入数字开始的问题。我还没有添加功能来实现这一点。有谁知道将输入数字输入脚本并为该程序创建正确开始时间的简单方法?

4

1 回答 1

1

所以这是我的数学。它现在工作。

   function carbonsaving() 
{ 
    $now = time();
    $start = mktime(0,0,0,$this->month,$this->day,$this->year);
    $growthrate = ($this->rate / $this->seconds)  ;
        $saving = round(((($now - $start) * $growthrate)+$this->base ));
    return $saving;
} 
于 2011-08-08T19:01:20.130 回答