回声 - 不要写多行,而是覆盖一行

时间:2018-04-06 16:32:33

标签: php html

我试着写一个在一行显示计数器的循环,已经坐了一个多小时但是无法弄明白。

主循环是

while($counter< 100){               
    echo $counter;
    usleep($timeInSeconds*1000000);
    $counter=$counter+1;
}

现在,这会在新行上延迟后打印100个数字。是否有可能为每个循环替换自身?

我尝试了很多选项,这是一个没有崩溃的选项:

while($counter < 100){

        $counter=$counter+1;
        echo $counter;
        usleep($timeInSeconds*1000000);

        flush();
        ob_flush();    
    }

然而,使用此选项它可以在一行中有延迟,但它不会清除前一个回声,所以它只是一堆数字彼此相邻

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

您正尝试在服务器上执行应在客户端上执行的操作。 我希望你正在制作计时器。您应该编写一些JavaScript代码,指示Web浏览器如何显示多个数字之间的延迟。您当前的代码将在许多浏览器上显示加载轮和整个持续时间的空白屏幕。 相反,用以下代码替换你的循环: &#13; &#13; var time_in_seconds = 1; //你可以用PHP变量的值替换1&#13; var count_element = document.getElementById(&#34; example_counter&#34;);&#13; var n = 0;&#13; var interval_id;&#13; &#13; function update_counter(){&#13;   n + = 1;&#13;   if(n> = 100){&#13;     clearInterval(interval_id);&#13;   }&#13;   count_element.textContent = n;&#13; }&#13; &#13; interval_id = setInterval(update_counter,time_in_seconds * 1000);&#13; &lt; span id =&#34; example_counter&#34;&gt;&lt; / span&gt;&#13; &#13; &#13;