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

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

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

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

JavaScript

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

HTML

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

Q&A

解決済

1回答

453閲覧

JavaScriptに外部読込

退会済みユーザー

退会済みユーザー

総合スコア0

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

JavaScript

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

HTML

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

1グッド

1クリップ

投稿2019/10/20 07:09

タイピングゲームを作ったのですが、ランキング表記の仕方がわかりません。
*現在の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>

*問題点*

ランキングをTOP5まで表示するのですが、ランキングの更新を行いたいと思っています。
また、現在の実装状態でランキングは表示されるのですが、ページの更新などを行った際、サーバー側のデータが書き換えられないためにもとに戻ってしまう(初期値のままである)のです。
*試したこと*

WEB上を探してみたのですが、サーバー側のデータを書き換えるのに、外部ファイルにして読み込ませ、書き換える必要があれば書き換えるという動作にするといいということまでは判明したのですが、それをどのように実装したらいいのかまではわかりませんでした。
参考にしたらいいサイトなどがあれば紹介していただければと思います。また、できれば具体的な書き方も押せていただけると幸いです。

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

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

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

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

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

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

oikashinoa

2019/10/20 07:50

> WEB上を探してみたのですが、サーバー側のデータを書き換えるのに、外部ファイルにして読み込ませ、書き換える必要があれば書き換えるという動作にするといいということまでは判明 どこに書いてあったかurlを質問本文に書くと良いです。
退会済みユーザー

退会済みユーザー

2019/10/20 07:52

了解しました。
guest

回答1

0

ベストアンサー

前の質問のコメント欄で書きましたが、JavaScriptでやりきるのは難しいです。
自身のスコアだけのランキングでしたら半永続的にデータを保持し続けられる「WebStorage」の仕組みが使えますが、「ユーザーすべての」となるとクライアントサイドの技術であるJavaScriptではできません。

PHPなどサーバーサイドの言語を利用し、データベースにデータを保存するようにしてください。

投稿2019/10/20 07:11

m.ts10806

総合スコア80850

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

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

m.ts10806

2019/10/20 07:14

でも以前の質問でWebStorageはすすめられてますね。 https://teratail.com/questions/214345 採用見送ったのでしょうか。 その後何を試したか調べたかわからないですね。
退会済みユーザー

退会済みユーザー

2019/10/20 07:16

phpですか。ありがとうございます。PHPも検討していきたいと思います。もしどのように記述していけばいいかなどありましたら、コメントしていただけると幸いです。
退会済みユーザー

退会済みユーザー

2019/10/20 07:18

言い訳になってしまうのですが、少し時間がなかったもので、久しぶりに検討しています。
m.ts10806

2019/10/20 07:19

まず調べてください。 「できること」「できないこと」は調べないとわかりませんし、 組むのはほかでもないあなたです。 ご存知かと思いますが、「コードください」となるとそれは質問ではなく作業依頼となります。 キーワードも出しています。まずそこからどんなものかを調べてください。 まずは「JavaScriptだけでやりきるのは無理」というのを理解するところからですね(Node.jsはサーバーサイドなので除く)
m.ts10806

2019/10/20 07:20

厳しいこというと時間がないとか他人である回答者には関係ありませんので、冷たいと思われるかもしれませんが、あくまでここは「質問サイト」です。
退会済みユーザー

退会済みユーザー

2019/10/20 07:50

すみません。
退会済みユーザー

退会済みユーザー

2019/10/20 07:57

まぁ、今後気をつければいいことですよ(^^)
m.ts10806

2019/10/20 07:59

なぜtonkoさんが? アドバイスも結構ですが自身もよくわからない横槍を気を付けてください。
退会済みユーザー

退会済みユーザー

2019/10/20 08:00

あっ、失礼しました。
kyoya0819

2019/10/20 10:44 編集

横槍失礼します。 JSだけでも可能ではあります。 FireBaseを使えばの話ですが m.ts10806さんがおっしゃるように「完全」にHTML,CSS,JSだけでやりきることは不可能です。
m.ts10806

2019/10/20 11:52

asuchi0819さん 補足ありがとうございます。 FireBaseは中々取り扱う機会はないですが選択肢としてはありそうですね。 あとは要件次第となりそうです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問