人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでの質問です。

ものすごく初歩的な事かと思いますが、単純に1秒おきにHTML上に文字を追加して表示したいと思っております。

1秒後 1
2秒後 1 2
3秒後 1 2 3
4秒後 1 2 3 4

このような感じで表示したいのですが単純に

echo "1";
sleep(1);
echo "2";
sleep(1);
echo "3";
sleep(1);
echo "4";

としても4秒後にまとめて「1234」と表示されるだけです。
当たり前といえば当たり前なんですが、HTML上に1秒おきに表示を行うにはどのようにすればよいでしょうか?

●質問者: quocard
●カテゴリ:インターネット ウェブ制作
✍キーワード:ECHO HTML PHP
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● GoldenDawn
●35ポイント
echo "1";
ob_flush();
flush();

sleep(1);
echo "2";
ob_flush();
flush();

sleep(1);
echo "3";
ob_flush();
flush();

sleep(1);
echo "4";

こんな感じでいけそうな気もしますが、どっちかというと JavaScript でやるべきことのような気もします。

◎質問者からの返答

ありがとうございます。

こちらの方法でうまくいきましたが、tableタグの中に入れると何故かまとめてじゃないと出てこないようです。

tableタグの終了までを1つとしてみている為処理が終わるまでは出てこないということでしょうか。

JavaScriptは今まで触る機会がなかったのでこれを機に調べてみるのもよいかもしれません。


2 ● kn1967
●35ポイント

javascriptならば下記のような感じになります

一時停止(sleep)に該当するものはないので

一定時間後にサブルーチンを呼び出す(setTimeout)を用います。

もちろんブラウザがjavascriptの動作を許可していないと動きませんし

ブラウザによって多少書き方が異なります。(下記の動作確認はIE6のみです)

<html>
<head>
 <script language="JavaScript">
 <!--
 var tNumber = 5;
 var tArray = new Array(tNumber);
 tArray[0] = "あ";
 tArray[1] = "い";
 tArray[2] = "う";
 tArray[3] = "え";
 tArray[4] = "お";
 var tCount = 1;
 function Timer1(){
   document.getElementById('TD1').innerText
 = document.getElementById('TD1').innerText + tArray[tCount];
 tCount++;
 if(tCount < tNumber) {
 setTimeout("Timer1()",1000);
 }
 }
 //-->
 </script>
</head>
<body onLoad='javascript:setTimeout("Timer1()",1000)'>
 <table border="1" width="100%">
 <caption>'あ'から'お'まで1秒毎に1行追加されていくテスト</caption>
 <tr><td id="TD1">あ</td></tr>
 </table>
</body>
</html>
|<
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ