TOP /すぐに使えるJavaScript タイマー

タイマー
<style type=text/css><!--
.fieldset{
width:170;padding:5px;
}
.fieldset *{
font-size:10pt;
}
.button{
font-size: 8pt; 
}
--></style>
<script type="text/javascript"><!--
var sset,mset,tset,tobj;
timesec=1000;
function timerset(){
    tobj=document.timerform;
if(tobj.timerbutton.value == "Start"){
    tm=tobj.timermin.value;
    ts=tobj.timersec.value;

 if(tm < 1 && ts < 1)return;
 if(ts.match(/[\D]/g) || tm.match(/[\D]/g)){
    alert("整数を入力してください");return;
 }
 if(ts > 59){
    tobj.timersec.value=59
    alert("秒は59以内");return;
 }

 tobj.timermin.disabled = true;
 tobj.timersec.disabled = true;
 tobj.minup.disabled = true;
 tobj.mindown.disabled = true;
 tobj.secup.disabled = true;
 tobj.secdown.disabled = true;
 tobj.timerbutton.value = "Stop";
 tobj.clearbutton.disabled = true;
 tset=setTimeout('timer()',1000);
}else{
 clearTimeout(tset);
 tobj.timerbutton.value = "Start";
 tobj.clearbutton.disabled = false;
}
}

function timer(){
 tm=tobj.timermin.value;
 ts=tobj.timersec.value;
if(tm < 1 && ts < 1){
 alert("時間だよ〜〜");               //メッセージ
 tobj.clearbutton.disabled = false;
 timerclear();
 return;
}
if(tm > 0 && ts < 1){
 tobj.timermin.value--;
 tobj.timersec.value=59;
}else
 tobj.timersec.value--;
 tset=setTimeout("timer()",1000);
}

function min(m){
 tobj=document.timerform;
 if(m < 0 && tobj.timermin.value <= 0)return;
 tobj.timermin.value=parseInt(tobj.timermin.value)+m;
 if(timesec>100)timesec-=200;
 mset=setTimeout("min("+m+")",timesec);
}
function sec(s){
 tobj=document.timerform;
 if(s < 0 && tobj.timersec.value<=0){
  if(tobj.timermin.value <= 0)return;
  else{
  tobj.timermin.value--;
  tobj.timersec.value=59;
  }
 }else if(s > 0 && tobj.timersec.value==59){
  tobj.timermin.value++;
  tobj.timersec.value=0;
 }else
  tobj.timersec.value=parseInt(tobj.timersec.value)+s;
 if(timesec>100)timesec-=200;
 sset=setTimeout("sec("+s+")",timesec);
}

function timerclear(){
 tobj=document.timerform;
 tobj.timermin.disabled = false;
 tobj.timersec.disabled = false;
 tobj.minup.disabled = false;
 tobj.mindown.disabled = false;
 tobj.secup.disabled = false;
 tobj.secdown.disabled = false;
 tobj.timerbutton.value = "Start";
}/*himajin.moo.jp*/
 // --></script>
<form name="timerform">
 <fieldset class="fieldset">
  <legend>タイマー</legend>
<table><tr><td>
<input type="text" value="0" name="timermin"size=5 maxlength=5 style="ime-mode:disabled;text-align:right">分
</td><td>
<input type="text" value="0" name="timersec"size=5 maxlength=2 style="ime-mode:disabled;text-align:right">秒
</td><td>
<input type="button" name="timerbutton"value="Start" onClick="timerset()"style="width:45">
</td></tr>
<tr><td>
<input type="button"class="button" name="minup"value="▲" onmousedown="min(1)"onmouseup="clearTimeout(mset);timesec=1000;"
><input type="button"class="button" name="mindown"value="▼" onmousedown="min(-1)"onmouseup="clearTimeout(mset);timesec=1000;">
</td><td>
<input type="button"class="button" name="secup"value="▲" onmousedown="sec(1)"onmouseup="clearTimeout(sset);timesec=1000;"
><input type="button"class="button" name="secdown"value="▼" onmousedown="sec(-1)"onmouseup="clearTimeout(sset);timesec=1000;">
</td><td>
<input type="button" name="clearbutton"value="reset" onClick="timerclear();this.form.reset();"style="width:45">
</td></tr></table>
 </fieldset>
</form>