- ベストアンサー
特定の時間に複数のメッセージからアットランダムに表示する
- 特定の時間帯にランダムに表示するジャバスクリプトの作成方法を教えてください。
- 特定の時間に複数のメッセージ(リンク)からランダムに表示するスクリプトを作成したいです。スクリプトは朝の7時から8時までの時間帯に有効になるようにしたいです。
- 特定の時間帯に複数のメッセージをランダムに表示するJavaScriptの作成方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>たとえば、7時から8時までは、複数のメッセージから1つを表示する、しかし、8時から9時までは何も表示しない、そのように時間によって、何も表示しないというようなものにしたいのです。 その場合はflagを立ててチェックするかその時間の範囲かチェックするだけでしょうね。 -flagを使う場合。 flag=new Array(24); flag[0] = 1;//表示する時間帯 flag[1] = 1; //略 flag[7] = 0;//表示しない時間帯 flag[8] = 0; flag[9] = 0; //略 var quotes=new Array() quotes[0]="メッセージかリンク"; //略 myDate=new Date(); myTime=myDate.getHours(); if(flag[myTime] ==1) { var whichquote=Math.floor(Math.random()*(quotes.length)) document.write(quotes[whichquote]) } --あらかじめ範囲を指定する場合 var quotes=new Array() quotes[0]="メッセージかリンク"; //略 myDate=new Date(); myTime=myDate.getHours(); if(myTime>=8 && myTime <=16) {//8:00-16:59まで表示 var whichquote=Math.floor(Math.random()*(quotes.length)) document.write(quotes[whichquote]) } --時間ごとにメッセージを切り替える場合 var quotes = new Array(); for(i=0;i<24;i++) { quotes[i] = new Array(); } quotes[0][0]="test1"; quotes[0][1]="test2"; quotes[1][0]="test3"; quotes[1][1]="test4"; //.... //略 myDate=new Date(); myTime=myDate.getHours(); if(quotes[myTime].length>0) { var whichquote=Math.floor(Math.random()*(quotes[myTime].length)) document.write(quotes[myTime][whichquote]); }
その他の回答 (1)
- mi-si
- ベストアンサー率35% (200/567)
1時間の間、乱数値を固定したい場合は、乱数生成アルゴリズムの欠点を逆に利用した方法が考えられます。JavaScriptのMath.randomは、random seedを固定出来ないので疑似乱数生成アルゴリズムは、自前で用意します。この数値はMath.floor(nowtime.getTime / 3600 / 1000)(1時間ごとに1ずつ増えていく値)を基本に生成します。値がいかにも乱数的に動いているだけで実際は乱数でもなんでも無いインチキテクですが。 一つの例です。 <SCRIPT language="JavaScript"> <!-- function prandom(){ now = new Date(); seed = Math.floor(now.getTime() / 3600 /1000); return Math.floor(((69069 * seed + 1) / 8)); } var quotes=new Array() ; quotes[0]='メッセージかリンク0' ; quotes[1]='メッセージかリンク1' ; quotes[2]='メッセージかリンク2' ; quotes[3]='メッセージかリンク3' ; var whichquote=prandom() % quotes.length; document.write(quotes[whichquote]); // --> </SCRIPT>
お礼
ご回答いただき、ありがとうございました。さっそくためさせていただきました。問題なく、動作します。 当方が説明不足だったのですが、実は、作りたいと思っているのは、時間ごとにというよりも、たとえば、7時から8時までは、複数のメッセージから1つを表示する、しかし、8時から9時までは何も表示しない、そのように時間によって、何も表示しないというようなものにしたいのです。 最初に的確に書いておくべきでした。すみません。 もし、上記のようなものが可能なら、よろしくお願いいたします。m(_ _)m それはそれとして、上記のスクリプトも別のところで、使わせていただきたく思っています。 ありがとうございました。
お礼
ありがとうございました。 やってみるとあっけなくできました。なるほど、こんなふうにできるのだと、感心してしまいました。flagを立ててチェックするものを使わせていただきます。 本当にありがとうございましした。