使用php和javascript,我想在一个十进制值和每60秒增加一个


using php and javascript I want to feed in a decimal value and increment it by one every 60 seconds

我已经创建了这个脚本,它似乎在值中提供,但不更新。当我查看创建的源代码时,var elapsedtime用该值更新,但它不是每分钟更新一次。

<?php
$elapsedtime = $database->calcProdtime($client,$stage,$orderid);
     ...
echo "<tr><td class=tablarge>Elapsed Time: </td><td class=tablarge><span id='ct' ></span>".$elapsedtime." minutes</td></tr>";
    ...
?>
<script type="text/javascript"> 
   function display_c(){
        var refresh=60000; // Refresh rate in milli seconds
        <?php echo "var elapsedtime = ".$elapsedtime; ?>        
        mytime=setTimeout('display_ct()',refresh)
   }
   function display_ct() {
        var strcount
        elapsedtime++
        document.getElementById('ct').innerHTML = x;
        tt=display_c();
   }
</script>

这里有一个更干净的:http://plnkr.co/edit/JLyC7Lf0FcfALCwpWF3M?p=preview

<h1>Elapsed time <span id='elapsed-time'>150</span></h1>
<!--<h1>Elapsed time <span id='elapsed-time'><?=$elapsed_time?></span></h1>-->
<script>
  setInterval( function(){
    var elapsed_time = parseInt( document.getElementById('elapsed-time').innerHTML );
    elapsed_time = elapsed_time + 1;
    document.getElementById('elapsed-time').innerHTML = elapsed_time;
  }
  , 1 * 1000);// Refresh rate in milli seconds
</script>
<script type="text/javascript"> 
   <?php echo "var elapsedtime = ".$elapsedtime; ?>        
   function display_c(){
        var refresh=60000; // Refresh rate in milli seconds
        mytime=setTimeout('display_ct()',refresh)
   }
   function display_ct() {
        var strcount
        elapsedtime++
        document.getElementById('ct').innerHTML = 'x';
        tt=display_c();
   }
  display_c();
 </script>

兄弟是对的

<?php echo "var elapsedtime = ".$elapsedtime; ?> 

必须从函数中移出,所以elapsedtime是一个全局变量。

下面的代码为我工作(请注意,我刚刚削减了php部分,并给变量elapsedtime一个初始值,以简化体验)

HTML代码:

<html>
<head>
    <script src='example.js'></script>
    </head>
    <body>
        <table>
            <tr>
                <td class=tablarge>Elapsed Time: </td>
                <td class=tablarge>
                    <span id='ct' ></span>
                    minutes
                </td>
            </tr>
        </table>
    </body>
</html>

example.js文件:

var elapsedtime = 100;
var refresh=1000; // Refresh rate in milli seconds
display_c();
function display_c(){
    mytime=setTimeout('display_ct()',refresh)
}
function display_ct() {
    var strcount;
    elapsedtime++;
    document.getElementById('ct').innerHTML = elapsedtime;
    tt=display_c();
}

这里有些注意

  1. 我已经将刷新间隔从你的代码中的60000更改为我的代码中的60,这将导致页面中显示的数字每秒刷新一次。
  2. 关键点有你需要首先触发setTimeout方法通过调用display_c()手动第一次,我没有看到这样的第一次触发在javascript代码你上面张贴。
  3. 我假设span的内容id ct是你想把变量elapsedtime的值,所以我已经改变了相应的代码。
  4. 我也很好奇变量strcount,因为你定义了它,但后来没有使用它。

你可以修改我的代码,并将其与你的php代码组合,使其工作