質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1211閲覧

JavaScriptのsetTimeoutが働きません。なぜでしょうか?

jmdajmw

総合スコア302

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2022/04/06 11:20

編集2022/04/06 13:10

1回しか表示しません。F5を押すとカウントアップします。なぜループしてくれないのでしょうか?

PHP

1<!DOCTYPE html> 2<html lang="ja"> 3<body> 4 <div id="edit_area"></div> 5 <script> 6 var fn = function() { 7 <?php 8 $foo = file_get_contents ("10.txt"); 9 file_put_contents("10.txt", $foo + 1); 10 ?> 11 let bar = '<?php echo $foo; ?>'; 12 document.getElementById('edit_area').innerHTML = bar; 13 setTimeout(fn,100); 14 }; 15 fn(); 16 </script> 17</body> 18</html>

カウントアップ処理を続けたい、ということでしょうか?

はい。100msごとにfnを再帰呼び出ししているつもりです。

JS の中で PHP を実行しようとしてるように見えますが、そんなことはできないので…。

え?そうなんですか?ではなぜ1回は動くのでしょうか?
また、やりたいことはなんとなくわかって頂けるかと思います。
どのように分割して実装すればカウントアップ可能になりますか?

追記
やっぱりわかりません。どうすればいいのでしょうか?

追記
やりたいことはサーバー側で管理、更新しているデータを端末側にリアルタイムで表示することです。

追記
ちなみに↓こちらの手法で出来ていると言えば出来ていますがチカチカします。
https://teratail.com/questions/5tlnwgdmzj3mn6

出来ました!!!

HTML

1<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 2<div id="edit_area"></div> 3<script> 4var fn = function() { 5 $.ajax({ 6 type: 'post', 7 url: "test6.php", 8 success: function(result){ 9 document.getElementById('edit_area').innerHTML = result; 10 } 11 }); 12 setTimeout(fn,10); 13}; 14fn(); 15</script>

PHP

1<?php 2$result = file_get_contents ("10.txt"); 3file_put_contents("10.txt", $result + 1); 4echo $result; 5exit; 6?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi_takatsuk

2022/04/06 11:24

カウントアップ処理を続けたい、ということでしょうか?
hoshi-takanori

2022/04/06 11:32

JS の中で PHP を実行しようとしてるように見えますが、そんなことはできないので…。
kinchannel

2022/04/06 12:05

scriptタグの中にPHPは書くことは出来ます。 なので、リロードの度にカウントがあがるのは当然です。 やってることは、 <div id="edit_area"></div> <?php $foo = file_get_contents ("10.txt"); file_put_contents("10.txt", $foo + 1); ?> <script> let bar = '<?php echo $foo; ?>'; document.getElementById('edit_area').innerHTML = bar; </script> のみと同じです。 リロードする度に、プラス1された数字が10.txtファイルに書き込まれて、それを呼び出しているので。
kei344

2022/04/06 13:33

まだ質問が「受付中」になっていますが、どのように解決したのかを回答文に書き、「解決済」にされてはいかがでしょうか。
guest

回答2

0

「1回しか表示しません。」というのが勘違いでしょう。
同じ値を表示するだけなので、画面を見ていても気づいていなだけです。
関数内に、console.log()とかalert()とか入れて繰り返し実行されていることを確認しましょう。

投稿2022/04/06 11:56

otn

総合スコア84677

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

index.html

HTML

1<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 2<div id="edit_area"></div> 3<script> 4var fn = function() { 5 $.ajax({ 6 type: 'post', 7 url: "test6.php", 8 success: function(result){ 9 document.getElementById('edit_area').innerHTML = result; 10 } 11 }); 12 setTimeout(fn,10); 13}; 14fn(); 15</script>

test6.php

PHP

1<?php 2$result = file_get_contents ("10.txt"); 3file_put_contents("10.txt", $result + 1); 4echo $result; 5exit; 6?>

投稿2022/04/06 13:48

jmdajmw

総合スコア302

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問