- ベストアンサー
サイトのリロード間隔を選択できるようにしたいのですが?
java初心者です。 以下の記述でページ全体を一定間隔にてリロードを繰り返させています。★★★★★の部分がリロード間隔となりますが、その部分を1分、5分、リロード無し、といったようにボタンで選べるようにしたいのですが、何か方法はありますでしょうか?よろしくお願いしますm<_ _>m <script type="text/javascript" language="javascript"> setTimeout("location.reload(true)",★★★★★); </script>
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
おっと!! 早とちりでしたぁ!! すんません。 質問文にちゃんと書いてあるのに、勝手に勘違いしちゃってました。 (リロードを繰り返すのですね。提示のものも、初期値を1分とかに設定しておけばリロードしますけど?・・・ってのでは、インチキかな) ^^)ゞ No3様のご指摘のは、うっかりしてました。ご指導ありがとうございます。 う~ん、設定変えたらキャンセルして・・ってやってると、いつまでたってもリロードしなくなっちゃう可能性も・・ ・・ってことで、設定した内容でリロードを繰り返すように修正しました。 (長くなっちゃったけど・・) *時間の計測は、ロードした時から始めますが、「なし」を設定すると一旦 キャンセルされて、他の設定時に再計測となります。 *クッキーの有効期間を設定していないので、ブラウザが終了するまで 有効となります。これを、次のときも有効にしたい場合は、有効期限を 指定してクッキーを設定すればよいです。 <html> <head> <script language="javascript"> var delay=0; var cnt=0; var flg=false; window.onload=function(){ if (document.cookie){ var ck = document.cookie + ';'; // クッキーから値を取得 var st = ck.indexOf('interval='); if (st>-1){ var ed = ck.indexOf(';',st); delay = unescape(ck.substring(st + 9, ed)); } } // セレクターをセット var sl = document.getElementById('hoge'); var e = sl.options; for (i=0; i<e.length; i++){ if (e[i].value==delay){sl.selectedIndex=i;} } set_timer(); //カウンターセット } function set_timer(){ if (!flg && delay>0){ flg=true; cnt = 0; t_id=setInterval('timer()',1000); } } function timer(){ cnt++; if ((delay>0) && (cnt>=delay*60)){location.reload(true);} if (cnt>301){clearInterval(t_id); flg = false;} } function set(e){ delay = e.options[e.selectedIndex].value; document.cookie = 'interval=' + escape(delay); // クッキーへ書き込み set_timer(); } </script> </head> <body> リロード: <select id="hoge" onchange="set(this);"> <option value="1">1分</option> <option value="5">5分</option> <option value="0" selected>なし</option> </select> </body> </html>
その他の回答 (3)
たまには、fujillinさんに横槍を! 1分を指定した後、5分を指定しても、1分でリロード?
- zeeeg
- ベストアンサー率55% (5/9)
fujillinさんの例だとリロードを繰り返さないので、 設定を一旦cookieへ保存して、 リロード時に設定を読み直すようにしたらいいと思うよ。
お礼
zeeegさん補足ありがとうございますm<_ _>m ただ私の知識があまりにも無く、どう書いたらいいのか、さっぱりわからないでおります(汗)
- fujillin
- ベストアンサー率61% (1594/2576)
★★★★★部分を変数にしておいて、値を設定すればよいだけでは? <サンプル> (リロードしてもわからないので、アラート表示が出るようにしてあります) <html> <head> <script type="text/javascript" language="javascript"> alert("LOAD!!"); function set(e){ var delay=e.options[e.selectedIndex].value * 60000; if (delay) {setTimeout("location.reload(true)",delay);} } </script> </head> <body> リロード: <select onchange="set(this);"> <option value="1">1分</option> <option value="5">5分</option> <option value="" selected>なし</option> </select> </body> </html>
お礼
fujillinさん ご返答ありがとうございますm<_ _>m まさに、おっしゃるとおり、変数にしてボタンで選べるようにしたかったのです。 私はJavaの基礎の基礎もわかっていない低い次元で、何をどうしていいのかわからずにおりました・・・ 教えて頂いたものを実行してみましたところ、ボタンで選択できるようになっていて感動しました。 しかし、時間が経つと一度リロードするのですが、繰り返しにはなりませんでした。 繰り返しもさせるにはどう書いたらいいのでしょうか??
お礼
動きました!! fujillinさん本当にありがとうございます。m<_ _>m こういったレベルのものは、初心者の私でさっぱりでした。 やはり、プロの方にお伺いしないとわかりません。 私の周りには、このような事を聞ける人もおらず OK WAVEといった媒体があって知り合え疎通できたというとろこです。 改めて、fujillinさんへの感謝の気持ちと、OK WAVEの存在へ感謝いたします。