我不明白为什么我没有看到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就是这样做的方式。我看到了与上面推荐的代码非常类似的内容。
非常感谢任何见解。
答案 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>