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

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

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

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

HTML

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

Q&A

1回答

645閲覧

JS動かない、is not defined...

GPE46232209

総合スコア14

PHP

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

HTML

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

0グッド

0クリップ

投稿2021/06/21 13:58

コード

<html lang="ja"> <head> <meta charset="uft8"> <title>time</title> </head> <body> <?php try { $db = new PDO('mysql:dbname=bulletinboard;host=127.0.0.1;charset=utf8','root', '' ); } catch (PDOException $e) { echo "データベース接続エラー :".$e->getMessage(); } $records = $db->query('SELECT * FROM chat WHERE id=5 '); $record = $records->fetch(); $day=0; $hour=0; //簡易タイマーPHP(指定した日時~日時までの期間だけ表示します) //設置するページの拡張子は必ず.phpとなっている必要があります。 //表示開始日時(この日時になったら表示されます) //※日時のフォーマットは必ず「2021-05-17 08:00:00」のようにしてください。 $startDate = $record['modified']; $datetime = $startDate; list($year, $month, $day, $hour, $minute, $second) = preg_split('/[-: ]/', $datetime); function time_change($hour, $day, $month, $year) { if ($hour>24) { $hour-= 24; $day += 1; switch ($day>=28) { case $month= 1:{ if ($day>31) { $day-= 31; $month+= 1; }} break; case $month =2:{ if ($day>28) { $day-= 28; $month+= 1; }} break; case $month=3: case $month=5: case $month=7: case $month=8: case $month=10:{ if ($day>31) { $day-= 31; $month+= 1; }} break; case $month=4: { if ($day>30) { $day-= 30; $month+= 1; }} break; case $month=6:{ if ($day>30) { $day-= 30; $month+= 1; }} break; case $month=9:{ if ($day>30) { $day-= 30; $month+= 1; }} break; case $month=11: { if ($day>30) { $day-= 30; $month+= 1; }} break; case $month=12: { if ($day>31) { $day-= 31; $month-= 11; $year+=1; }} break; default: break; } } } if($record['time_limit'] == '2hours'){$hours= 02; $hour+= $hours; time_change($hour, $day, $month, $year);} elseif($record['time_limit'] == '6hours'){$hours = 06; $hour+= $hours; time_change($hour, $day, $month, $year);} elseif($record['time_limit'] == '1day'){$days = 01; $day += $days;time_change($hour, $day, $month, $year);} elseif($record['time_limit'] == '3day'){$days = 03; $day += $days;time_change($hour, $day, $month, $year);} elseif($record['time_limit'] == '5day'){$days = 05; $day += $days;time_change($hour, $day, $month, $year);} elseif($record['time_limit'] == '1week'){$days = 07; $day += $days;time_change($hour, $day, $month, $year);} elseif($record['time_limit'] == '2week'){$days = 14; $day += $days; time_change($hour, $day, $month, $year);} date_default_timezone_set('Asia/Tokyo');//タイムゾーン (日本以外の場合には適宜設定ください) //表示終了日時(この日時になったら非表示になります) //※日時のフォーマットは必ず「2021-05-17 08:00:00」のようにしてください。 $setDate = strtotime("$year-$month-$day $hour:$minute:$second"); $endDate = date('Y-m-d H:i:s', $setDate); if(date('Y-m-d H:i:s') >= $startDate && date('Y-m-d H:i:s') < $endDate){ ?> <script type="text/javascript"> window.onload =function showCountdown() { var dnumTarget =<?php echo $endDate; ?>; var dnumNow = <?php echo $startDate?>; var diff2Dates = dnumTarget - dnumNow; if( dnumTarget < dnumNow ) { // 期限が過ぎた場合は -1 を掛けて正の値に変換 diff2Dates *= -1; } var msg1 = "期限の<?php echo $endDate; ?>"; // 差のミリ秒を、日数・時間・分・秒に分割 var dDays = diff2Dates / ( 1000 * 60 * 60 * 24 ); // 日数 diff2Dates = diff2Dates % ( 1000 * 60 * 60 * 24 ); var dHour = diff2Dates / ( 1000 * 60 * 60 ); // 時間 diff2Dates = diff2Dates % ( 1000 * 60 * 60 ); var dMin = diff2Dates / ( 1000 * 60 ); // 分 diff2Dates = diff2Dates % ( 1000 * 60 ); var dSec = diff2Dates / 1000; // 秒 var msg2 = Math.floor(dDays) + "日" + Math.floor(dHour) + "時間" + Math.floor(dMin) + "分" + Math.floor(dSec) + "秒"; // 表示文字列の作成 var msg; if( dnumTarget > dnumNow ) { // まだ期限が来ていない場合 msg = msg1 + "までは、あと" + msg2 + "です。"; } else { // 期限が過ぎた場合 msg = msg1 + "は、既に" + msg2 + "前に過ぎました。"; } // 作成した文字列を表示 document.getElementById("RealtimeCountdownArea").innerHTML = msg; } // 1秒ごとに実行 setInterval('showCountdown()',1000); </script> <?php } ?>### ヘディングのテキスト <input type=button onclick="showCountdown();" > <p id="RealtimeCountdownArea">This note is written !</p> <p><?php echo $endDate?></p> </body> </html>

前提・実現したいこと

PHP、html、JSを使いjQueryは使わないファイルを作成しています。
PHPでDBから時間を読み込んでJSで動的にページにカウントダウンをしている最中です。

発生している問題・エラーメッセージ

Uncaught ReferenceError_ showCountdown is not defined at HTMLInputElement.onclick が直らないです治らないです。

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

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

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

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

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

guest

回答1

0

showCountdownがwindow.loadの中でしか定義されてないので、onclickなどで呼び出せないのだと思います。まずは関数をグローバル領域で定義してあげて、各トリガーで呼び出してあげれば良いかと思います。

html

1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge"> 6 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 7 <title>Document</title> 8 <script> 9 function hoge() { 10 console.log('ほげ') 11 } 12 window.onload = hoge; 13 setInterval(hoge,1000); 14 </script> 15</head> 16<body> 17 <button type="button" onclick="hoge()">hoge</button> 18</body> 19</html>

投稿2021/06/21 15:31

runnynose

総合スコア497

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

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

GPE46232209

2021/06/22 12:56

なるほどです。結局のところ、ローカル関数になっていたのでつながらなかったのですね。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問