タイピングゲームを作ったのですが、ランキング表記の仕方がわかりません。
*現在の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上を探してみたのですが、サーバー側のデータを書き換えるのに、外部ファイルにして読み込ませ、書き換える必要があれば書き換えるという動作にするといいということまでは判明したのですが、それをどのように実装したらいいのかまではわかりませんでした。
参考にしたらいいサイトなどがあれば紹介していただければと思います。また、できれば具体的な書き方も押せていただけると幸いです。
回答1件
あなたの回答
tips
プレビュー