PHP / Javascript计时器和计数器

时间:2011-08-05 01:06:02

标签: php javascript time mktime

概述:我需要一个可以从插入的数字中计数的计数器,可以在没有用户的情况下继续计数,并在网站中直观地显示计数。当我离开这里时,我会努力解决这个问题。任何帮助,将不胜感激。我计划将其打包成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. 输入数字开头的问题。我还没有添加功能来实现这一目标。有没有人知道一个简单的方法让输入数字进入脚本并为该程序创建正确的开始时间?

1 个答案:

答案 0 :(得分: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;
}