タイマーアプリのアウトプット


こんにちわ、168です。
本日はタイマーアプリの試作品を参考ページを確認しながら作成しましたので、記事を書こうと思います。


**タイマーのメインコード

app/views/times/index.html.erb

<!DOCTYPE html>
<h1>TIMER</h1>
<form name="timer">
  <h2>CountUp</h2>
  <input value="0" class="hou">時間
  <input value="0" class="min">分
  <input value="0" class="sec">秒<br>
  <input type="button" value="スタート" onclick="cntStart1()">
  <input type="button" value="ストップ" onclick="cntStop1()">
  <input type="button" value="リセット" onclick="reSet1()">
</form>

<form name="timer2">
  <h2>CauntDown</h2>
  <input value="0" class="hou">時間
  <input value="0" class="min">分
  <input value="0" class="sec">秒<br>
  <input type="button" value="スタート" onclick="cntStart2()">
  <input type="button" value="ストップ" onclick="cntStop2()">
  <input type="button" value="リセット" onclick="reSet2()">
</form>


<script>

 //countUpを行う関数を宣言
var timer1;

//ストップを押せないように宣言
document.timer.elements[4].disabled=true;


//スタートを押すと1000ミリ秒毎に呼び出す関数
function cntStart1()
{
  document.timer.elements[3].disabled=true;
  document.timer.elements[4].disabled=false;
  document.timer.elements[5].disabled=true;
  timer1=setInterval("countUp()",1000);
}

//ストップを押すと止まる関数
function cntStop1()
{
  document.timer.elements[3].disabled=false;
  document.timer.elements[4].disabled=true;
  document.timer.elements[5].disabled=false;
  clearInterval(timer1);
}

//カウントアップ関数
function countUp()
{
  var hou1=document.timer.elements[0].value;
  var min1=document.timer.elements[1].value;
  var sec1=document.timer.elements[2].value;

  {
    if (hou1=="") hou1=0;
    hou1=parseInt(hou1);

    if (min1=="") min1=0;
    min1=parseInt(min1);

    if (sec1=="") sec1=0;
    sec1=parseInt(sec1);

    tmWrite1(hou1*3600+min1*60+sec1+1);
  }
}

//残り時間を書き出す関数
function tmWrite1(int1)
{
  int1=parseInt(int1);

  {
    //残り分数はintを3600で割って切り捨てる
    document.timer.elements[0].value=Math.floor(int1/3600);
    //残り分数はintを3600で割ったあまりを切り捨てた
    document.timer.elements[1].value=Math.floor(int1%3600/60);
    //残り秒数はintを60で割った余り
    document.timer.elements[2].value=int1 % 60;
  }
}

//フォームを初期状態に戻す(リセット)関数
function reSet1()
{
  document.timer.elements[0].value="0";
  document.timer.elements[1].value="0";
  document.timer.elements[2].value="0";
  document.timer.elements[3].disabled=false;
  document.timer.elements[4].disabled=true;
  clearInterval(timer1);
}

//countDownを行う関数を宣言
var timer2;

//ストップを押せないように宣言
document.timer2.elements[4].disabled=true;

//スタートを押すと1000ミリ秒毎に呼び出す関数
function cntStart2()
{
  document.timer2.elements[3].disabled=true;
  document.timer2.elements[4].disabled=false;
  document.timer2.elements[5].disabled=true;
  timer2=setInterval("countDown()",1000);
}

//ストップを押すと止まる関数
function cntStop2()
{
  document.timer2.elements[3].disabled=false;
  document.timer2.elements[4].disabled=true;
  document.timer2.elements[5].disabled=false;
  clearInterval(timer2);
}

//カウントダウン関数
function countDown()
{
  var hou2=document.timer2.elements[0].value;
  var min2=document.timer2.elements[1].value;
  var sec2=document.timer2.elements[2].value;

  if( (hou2=="") && (min2=="") && (sec2=="") )
  {
    alert("時刻を設定してください!");
    reSet2();
  }
  else
  {
    if (hou2=="") hou2=0;
    hou2=parseInt(hou2);

    if (min2=="") min2=0;
    min2=parseInt(min2);

    if (sec2=="") sec2=0;
    sec2=parseInt(sec2);

    tmWrite2(hou2*3600+min2*60+sec2-1);
  }
}

//残り時間を書き出す関数
function tmWrite2(int2)
{
  int2=parseInt(int2);

  if (int2<=0)
  {
    reSet2();
    alert("時間です!");
  }
  else
  {
    //残り分数はintを3600で割って切り捨てる
    document.timer2.elements[0].value=Math.floor(int2/3600);
    //残り分数はintを3600で割ったあまりを切り捨てた
    document.timer2.elements[1].value=Math.floor(int2%3600/60);
    //残り秒数はintを60で割った余り
    document.timer2.elements[2].value=int2%60;
  }
}

//フォームを初期状態に戻す(リセット)関数
function reSet2()
{
  document.timer2.elements[0].value="0";
  document.timer2.elements[1].value="0";
  document.timer2.elements[2].value="0";
  document.timer2.elements[3].disabled=false;
  document.timer2.elements[4].disabled=true;
  document.timer2.elements[5].disabled=false;
  clearInterval(timer2);
}

</script>


** 画面
f:id:output168:20210226112617p:plain


** 学習

<form>
〜
</form>

ユーザーが入力したものをJavaScriptプログラムでサーバーを動かす事ができる。

<form name="test">
  <input>
  〜
</form>

formオブジェクト"test"のelementsオブジェクトの何番目(上から0.1.2.3〜)に何の指示を出すかということを命令できるようになる。

#命令のコード
document.test.elements[0] 

今回使用している指示コードは

#( )の中身を記述
document.test.elements[0].value=( );

#使用をできなくする 
document.test.elements[0].disabled=true; 

#使用を許可する
document.test.elements[0].disabled=false; 


form内には今回は以下の要素を代入している。

#""内の「test」文字を入力する
<input value="test"> 

#ボタンとして使用する
<input type="button"> 

今回代入した要素以外にも使用できる要素は存在する。

<input type="button" onclick="test"> #ボタンを押した際に""内の「test」関数を実行

条件を満たすと定義している関数を動かす事が可能。
関数が一致、もしくは書かれていないとエラーが起こる。

#""内の「test」関数を1000ミリ秒(1秒)毎に処理を起こす
setInterval("test()",1000);

時間の設定が1ミリ秒で行われているため、1秒の処理をする際にはそのような秒数に合わせなければならない。

function test()
{〜
}

test関数の処理を{ }内に記入して動かす。

alert("test");

( )内の""内の「test」をポップさせる。

#( )内の数の数値以下の値を返す
Math.floor(数);

小数点以下を記入しない場合、記入する。

clearInterval(test);

( )内のtest関数を解除する。


** まとめ

とりあえず動くものをと考えて作っていたため、見た目はとても簡素な状態で作りました。
記入してみると意外と少ない内容でタイマーが動いている事がわかりました。
参考にしたサイトを見ながら行いましたが、次はそちらのサイトを見ずに今回とは少し違ったタイマーを作成しようと思います。

次回もまたよろしくお願いします。

参考にしたサイト様
www.pazru.net