🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

PHP

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

JavaScript

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

HTML

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

Q&A

解決済

2回答

622閲覧

経過時間表示(onclick)とid設定

退会済みユーザー

退会済みユーザー

総合スコア0

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

PHP

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

JavaScript

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

HTML

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

1グッド

0クリップ

投稿2019/10/20 06:53

編集2019/10/20 06:56

私はゲームを作っています。タイピングゲームなのですが、ゲーム本体の実装はできました。
しかし、ランキングを作ろうとしているのですが、さまざまなエラーが発生してしまいます。
以下に私の実現させたいことと、これまだの編集の経緯をご説明しますので、最後に記す質問にお答えいた抱きたいです。

*実現したい内容*

  • ランキングの生成(5位まで)→下のJSではすでに完成している。
  • タイマーの可視化

*ゲームの流れ*

html内にある指定されたボタンをクリック

名前を入力

ゲーム開始(裏でタイマーが作動)

ゲーム終了
(タイマーが停止し、ランキングを表示して終了)

*初期のデメリット*

・タイマーが表示されないため、自分が実際にどのくらいの時間かかっているかはわからない。
→タイマーの可視化によってかかった時間を表示させたい

※具体的に言うと・・・
html内にある指定されたボタンをクリック

名前を入力

ゲーム開始+**タイマーを表示&カウント開始**

ゲーム終了
(タイマーが停止し、ランキングを表示し直して終了)

*JavaScript(初期)*

html

1<script> 2 var r=[ 3 ['59:59.95','abc'], 4 ['59:59.96','xyz'], 5 ['59:59.97','ijk'], 6 ['59:59.98','aaa'], 7 ['59:59.99','zzz'], 8 ]; 9 var qs=[ 10 'q1', 11 'q2', 12 ]; 13 const viewRank=()=>{ 14 document.querySelector('#rank span').innerHTML=r.map(x=>x.join(" ")).join("<br>"); 15 }; 16 window.addEventListener('DOMContentLoaded',()=>{ 17 viewRank(); 18 document.querySelector('#start').addEventListener('click',e=>{ 19 const t1=e.target; 20 const t2=document.querySelector('#a'); 21 t1.disabled=true; 22 t2.disabled=false; 23 const name=prompt("お名前を入力してください。"); 24 if(name=="") name="UnKnown"; 25 (async()=>{ 26 const s=new Date().getTime(); 27 for(var i=0;i<qs.length;i++){ 28 const qStr=qs[i]; 29 document.querySelector('#q span').textContent=qStr; 30 t2.value=""; 31 t2.focus(); 32 await new Promise(resolve=>{ 33 const timerId=setInterval(()=>{ 34 if(t2.value==qStr){ 35 clearInterval(timerId); 36 resolve(); 37 } 38 },10); 39 }); 40 } 41 const e=new Date().getTime(); 42 const diff=e-s; 43 const str=(10000+diff/1000).toString(); 44 const time=str.substr(1,2)+":"+ 45 str.substr(3,5); 46 r.push([time,name]); 47 r=await r.sort((x,y)=>x[0]>y[0]?1:-1).splice(0,5); 48 viewRank(); 49 t1.disabled=false; 50 t2.disabled=true; 51 })(); 52 }); 53 }); 54</script> 55<input type="button" value="ゲームスタート!" id="start"> 56<font size="5"><div id="q">Q:<span>ここに問題が表示されます。</span></div></font> 57<div>A:<input type="text" id="a"></div> 58<table border="1"> 59<tr> 60<td> 61<div id="rank">現在のランキングトップ5<br> 62 <center><span></span></center> 63</div> 64 </td></tr></table>

*JavaScript(現状)*

html

1<script> 2var r=[ 3 ['59:59.95','abc'], 4 ['59:59.96','xyz'], 5 ['59:59.97','ijk'], 6 ['59:59.98','aaa'], 7 ['59:59.99','zzz'], 8 ]; 9 var qs=[ 10 'q1', 11 'q2', 12 ]; 13 const viewRank=()=>{ 14 document.querySelector('#rank span').innerHTML=r.map(x=>x.join(" ")).join("<br>"); 15 }; 16 window.addEventListener('DOMContentLoaded',()=>{ 17 viewRank(); 18 document.querySelector('#start').addEventListener('click',e=>{ 19 const t1=e.target; 20 const t2=document.querySelector('#a'); 21 t1.disabled=true; 22 t2.disabled=false; 23 const name=prompt("お名前を入力してください。"); 24 if(name=="") name="UnKnown"; 25 (async()=>{ 26 const s=new Date().getTime(); 27 for(var i=0;i<qs.length;i++){ 28 const qStr=qs[i]; 29 document.querySelector('#q span').textContent=qStr; 30 t2.value=""; 31 t2.focus(); 32 await new Promise(resolve=>{ 33 const timerId=setInterval(()=>{ 34 if(t2.value==qStr){ 35 clearInterval(timerId); 36 resolve(); 37 } 38 },10); 39 }); 40 } 41 const e=new Date().getTime(); 42 const diff=e-s; 43 const str=(10000+diff/1000).toString(); 44 const time=str.substr(1,2)+":"+ 45 str.substr(3,5); 46 r.push([time,name]); 47 r=await r.sort((x,y)=>x[0]>y[0]?1:-1).splice(0,5); 48 viewRank(); 49 t1.disabled=false; 50 t2.disabled=true; 51 })(); 52 }); 53 }); 54</script> 55<input type="button" value="ゲームスタート!" id="start"> 56<font size="5"><div id="q">Q:<span>ここに問題が表示されます。</span></div></font> 57<div>A:<input type="text" id="a"></div> 58<br> 59<br> 60<script> 61 document.getElementById("start").onclick = function() { 62 PassSec = 0; 63 PassageID = setInterval('showPassage()',1000); 64 document.getElementById("start").disabled = true; 65 }; 66</script> 67<br> 68<br> 69<table border="1"> 70 <tr> 71 <td> 72 <div id="rank">現在のランキングトップ5<br> 73 <center><span></span></center> 74 </div> 75 </td> 76 </tr> 77</table>

*現状の問題点*

タイマーが表示されるように修正しようとしましたが、どこにクリック部分のidを設定したいいのかわかりませんでした。きっとidが設定されることで表示できると思います。
万が一idを設定できない環境である場合、どのようにしたらいいかなども教えてください。

退会済みユーザー👍を押しています

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

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

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

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

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

m.ts10806

2019/10/20 07:05

インデントぐちゃぐちゃなので直した方が良いのと JavaScriptだけでは「自分自身」のランキングしかできません。 しかも現状のコードだとWebStorageに保存しているわけではないので、 再アクセスするとランキングなどはリセットされます。 タイマーの表示くらいでしたらそこまで難しくはないでしょうけど、 もう少し設計部分をしっかり詰められた方がこの先困らなくて済むと思います。
退会済みユーザー

退会済みユーザー

2019/10/20 07:13

ランキングのほうも検討しております。(実を言うと別で質問しております。) インデントは急いでいたためにぐちゃぐちゃになってしまいました。気を付けます。
m.ts10806

2019/10/20 07:17

インデントは手元のコードを修正し、反映しておいてください。 こちらは誰も急いでいないので、そこは丁寧にされたほうが良いです。急いだところで問題が大きくなるだけなので。 それに・・・以前の質問の回答が無駄になっているような。(すでに回答してコメントに書いています)
guest

回答2

0

現状の質問内容から推測される回答になります。質問内容が明確になり次第、再度調整します。

JavaScript

1const timer = document.getElementById('timer'); 2const start = document.getElementById('start'); 3let counter = 0; 4const showPassage = () => { 5 counter++; 6 timer.innerText = counter + "sec"; 7}; 8start.onclick = () =>{ 9 setInterval(showPassage, 1000); 10 start.disabled = true; 11};

デモページ

タイマーを表示したいのであれば、ただ単にタイマーを表示する要素に対して現在のカウントを付与すればいいのでは?

投稿2019/10/21 03:12

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

html

1<form action="#" name="form1"> 2経過時間:<input type="text" name="field1" size="8" ></input> 3<input type="button" value="スタート" onclick="start=new Date(); disp();" ></input><br></form> 4<script type="text/javascript"> 5// 初期化 6var hour = 0; 7var min = 0; 8var sec = 0; 9var now = 0; 10var datet = 0; 11function disp(){ 12now = new Date(); 13datet = parseInt((now.getTime() - start.getTime()) / 1000);//現在時刻-クリック時刻 14hour = parseInt(datet / 3600); 15min = parseInt((datet / 60) % 60); 16sec = datet % 60; 17// 数値が1桁の場合、頭に0を付けて2桁で表示する指定 18if(hour < 10) { hour = "0" + hour; } 19if(min < 10) { min = "0" + min; } 20if(sec < 10) { sec = "0" + sec; } 21var timer1 = hour + ':' + min + ':' + sec; 22document.form1.field1.value = timer1; 23setTimeout("disp()", 1000); 24} 25</script>

これで解決しました。

投稿2019/10/25 21:01

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問