• ベストアンサー

JavaScriptを使って毎日決まった時間に同じ作業を繰り返し行うには?

毎日15時になったら parent.frames("A1").location.href = "2-A.html" parent.frames("B1").location.href = "2-Aクリック.html" を行いたい。というJavascriptを組みたいのですが、全く謎に包まれてきました。 色んな所で調べながらで調べながら自分なりに下記の様に作ってみたんですが…良くわからなくなってしまいました… なんとかタイマーらしくカウントダウンはするんですが、時間を過ぎると白紙になってしまいます… なんとか助けていただけないでしょうか? <body> <p align="center" class="style1"> 発射まで<input type="text" name="tm2" size="1">時間<input type="text" name="tm2" size="1">分<input type="text" name="tm2" size="1">秒</p> <script type="text/javascript"> var CountDownGenerator = function (y, m, d, hh, mm, ss) {  var t = new Date(y, m-1, d, hh || 0, mm || 0, ss || 0);  var s = y + '年' + m + '月' + d + '日' +   (undefined === hh ? '': hh + '時') +   (undefined === mm ? '': mm + '分') +   (undefined === ss ? '': ss + '秒');  return function () {   var sa = t - (new Date);   sa = sa / 1000 |0;   if (sa<0) return { end: true };   var ss = sa % 60; sa = sa / 60 |0;   var mm = sa % 60; sa = sa / 60 |0;   var hh = sa % 24; sa = sa / 24 |0;   var dd = sa;   return {    day: dd, hours: hh, minutus: mm, seconds:ss, str:s, end:false   };  };  } var Viewer = function (c, nm) {   var txt = document.getElementsByName(nm);    return function() {   var time = c();   if (time.end) return   txt[0].value = time.hours;   txt[1].value = time.minutus;   txt[2].value = time.seconds;   setTimeout( arguments.callee, 1000);  }(); }; var hiduke = new Date(); var myyear = hiduke.getYear(); // 年 var mymonth = hiduke.getMonth() + 1; // 月 var myday = hiduke.getDate(); // 日 var myhour = hiduke.getHours(); // 時 var mymin = hiduke.getMinutes(); // 分 var mysec = hiduke.getSeconds(); // 時 //--------実際に実行する時間--- var hahour = '15';// 時 var hamin = '00';// 時// 分 var hasec = '00';// 時 //----------------------------- var jikkou = CountDownGenerator(myyear, mymonth, myday, hahour,hamin,hasec); Viewer(jikkou, 'tm2'); if(!jikkou << hiduke){ parent.frames("A1").location.href = "2-A.html" parent.frames("B1").location.href = "2-Aクリック.html" } //--> </script>

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

おは~。ながめてたら、それを、かいたのおれじゃん!ってことで。 なんかいけてないようなきがする~。 ほんとは、すうちのちぇっくしなきゃね~ ばぶばぶばぶぅ~ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <title>かうんとだうんして、なにかする</title> <p align="center"> 発射まで <input type="text" name="tm2" size="1">時間 <input type="text" name="tm2" size="1">分 <input type="text" name="tm2" size="1">秒 </p> <script type="text/javascript"> var CountDownGenerator = function (y, m, d, hh, mm, ss) {  var t = new Date(y, m-1, d, hh || 0, mm || 0, ss || 0);  var s = y + '年' + m + '月' + d + '日' +   (undefined === hh ? '': hh + '時') +   (undefined === mm ? '': mm + '分') +   (undefined === ss ? '': ss + '秒');  return function () {   var sa = t - (new Date);   sa = sa / 1000 |0;   if (sa<0) {    return { end: true };   }   var ss = sa % 60; sa = sa / 60 |0;   var mm = sa % 60; sa = sa / 60 |0;   var hh = sa % 24; sa = sa / 24 |0;   var dd = sa;   return {    day: dd, hours: hh, minutus: mm, seconds:ss, str:s, end:false   };  }; }; var EveryTime = function (y, m, d, hh, mm, ss) {  var now = new Date;  if (y === '') y = now.getFullYear();  if (m === '') m = now.getMonth() + 1;  if (d === '') d = now.getDate();  if (hh === '') hh = now.getHours();  if (mm === '') mm = now.getMinutes();  if (ss === '') ss = now.getSeconds();  return CountDownGenerator(y, m, d, hh, mm, ss); } var Viewer = function (c, nm, func) {  var txt = document.getElementsByName(nm);  return function() {   var time = c();   if (time.end) return func();//ここ   txt[0].value = time.hours;   txt[1].value = time.minutus;   txt[2].value = time.seconds;   setTimeout( arguments.callee, 1000);  }(); }; var func = function () {  alert("なにかする?"); } var jikkou = EveryTime('','','',15,0,0);//0と''は違う Viewer(jikkou, 'tm2', func); </script>

don191969
質問者

お礼

ややこしい質問ですいません…(T△T) 一度↑を参考にチャレンジしてみます!!また結果を報告に来ます!!何度もありがとうございます!!

don191969
質問者

補足

最高です!!出来ました!!!ありがとうございます!!!

すると、全ての回答が全文表示されます。

その他の回答 (5)

回答No.6

function counter(){ if (15 != (new Date).getHours()) { setTimeout(counter, 1000); return; } parent.frames("A1").location.href = "2-A.html"; parent.frames("B1").location.href = "2-Aクリック.html"; }; counter(); かんちがいさせてしまったのなら、ごめんなさい 1びょうおきに、じかんをしらべているのだから 15じになったじてんで、やめればよいとおもっただけ いんたーばるたいまーをやめさせるには、たいまーIDを どこかにほぞんしてないといけない。 それもめんどうなので、うえのれい。

すると、全ての回答が全文表示されます。
  • t_netbug
  • ベストアンサー率34% (15/44)
回答No.5

ばぶさんのご指摘を元に修正しました。 1000だと15時00分00秒から15時00分59秒までの間、プログラムが動作し続けますねw <script type="text/javascript"> <!-- function counter(){ d = new Date(); H = d.getHours(); M = d.getMinutes(); if(H==15 && M==0){ parent.frames("A1").location.href = "2-A.html"; parent.frames("B1").location.href = "2-Aクリック.html"; } } setInterval('counter()',60000); 質問者様は、ここを見ているのでしょうか。

すると、全ての回答が全文表示されます。
  • t_netbug
  • ベストアンサー率34% (15/44)
回答No.4

15時ちょうどかと思ってましたw

すると、全ての回答が全文表示されます。
回答No.3

それならば、「ふん」をも、みるひつようがないじょ^^;

すると、全ての回答が全文表示されます。
  • t_netbug
  • ベストアンサー率34% (15/44)
回答No.2

カウントダウンいりますか? いらなければここまで簡潔にまとまりますけど。 <script type="text/javascript"> <!-- function counter(){ d = new Date(); H = d.getHours(); M = d.getMinutes(); if(H==15 && M==0){ parent.frames("A1").location.href = "2-A.html"; parent.frames("B1").location.href = "2-Aクリック.html"; } } setInterval('counter()',1000); //-->

don191969
質問者

お礼

こんなにも簡単にまとまるんですね?正直カウントダウンは必要ないです(汗) 中々WEBを見る事が出来なくレスが遅くなってすいません。

すると、全ての回答が全文表示されます。

関連するQ&A