js计数器不在php中显示

时间:2013-02-27 20:32:33

标签: php javascript counter

我不明白为什么我没有看到div中的每个号码都被透露。

我的代码......

<head>
    <script>
        function countit(i)
        {
            document.getElementById('counter').innerHTML = i;
        }
    </script>
</head>
<body>

<div id="counter"></div>

<script>countit(1)</script>
<?php sleep(1); ?>
<script>countit(2)</script>
<?php sleep(1); ?>
<script>countit(3)</script>

</body>

我有一个PHP脚本,它处理来自数据库的几条记录,我想显示一个计数器 正在处理的当前recod。我认为JS就是这样做的方式。我看到了与上面推荐的代码非常类似的内容。

非常感谢任何见解。

4 个答案:

答案 0 :(得分:2)

PHP缓冲输出,直到完成运行才发送页面。睡眠不会在执行脚本元素之间运行。

重写您的逻辑以改为使用JavaScript setInterval

或者,在PHP脚本中disable or avoid output buffering,但请注意,这可能会影响浏览器缓存页面的能力。

答案 1 :(得分:0)

问题是您的PHP代码在您的服务器上执行,而您需要在客户端(JavaScript)上执行代码才能使其正常工作:

<script>
  var idx = 1;
  var doCount= function(){
      if(idx >= 3) return;
      countit(idx);
      setTimeout(doCount,1000);         
  };
  doCount();


</script>

删除以下内容:

<?php sleep(1); ?>
<script>countit(2)</script>
<?php sleep(1); ?>
<script>countit(3)</script>

答案 2 :(得分:0)

PHP是服务器端语言,而Javascript是客户端。我猜你只是在3 div看到counter。原因是因为PHP sleep(1)在页面呈现之前发生。您需要在Javascript中使用setInterval来完成您要执行的操作。

答案 3 :(得分:0)

您的代码等待2秒钟,浏览器会收到:

<head>
    <script>
        function countit(i)
        {
            document.getElementById('counter').innerHTML = i;
        }
    </script>
</head>
<body>

<div id="counter"></div>

<script>countit(1)</script>

<script>countit(2)</script>

<script>countit(3)</script>

</body>

这可能不是你想要的。 让我们尝试这样的事情:

<script>
    var i = 1;
    function counter()
    {
       if (i < 4)
       {
         countit(i);
         i++;
         window.setTimeout(counter,1000);
       }
    }

    counter();
</script>