プロが教えるわが家の防犯対策術!

表題の通りになるのですが、現在Wordpressにてサイトを運営しております。
サイトの一部のテキストを曜日・時間帯によって何回か変更したいと考えております。

具体的には下記のような形が実現できたらと思っております。

日曜15:00~15:30に「只今タイムセール!」というテキストを30分間のみ表示
日曜15:30~月曜15:00に「次のタイムセールは月曜の15時~15時30分に行います」というテキストを表示
月曜15:00~15:30に「只今タイムセール!」というテキストを30分間のみ表示
月曜15:30分~火曜15:00に「次のタイムセールは火曜の15時~15時30分に行います」というテキストを表示
…以下、土曜日まで同じように繰り返しになります。

何か良いやり方がありましたら、教えて頂けましたらと思います。
宜しくお願い致します。

A 回答 (3件)

多分、そのようなプラグイン等はないのではないかな。

(汎用性がないので)

時刻の判定やテキストの内容を変える方法を知りたいのであれば、ANo2様もすでにご提示になっていらっしゃいますが、
http://www.bing.com/search?q=%E6%99%82%E5%88%BB% …

>何か良いやり方がありましたら、教えて頂けましたらと思います
「良いやり方」は特に思いつきませんが・・・
 1)時刻によってメッセージを変えて表示する関数を作成しておく
 2)load時に1)を実行し、setTimeoutなどで適当な間隔で再実行させる
という考え方で実現できると思います。

時間の精度をどのくらいにしたいかで実行間隔が変わってきますが、たかだか一日2回しか変わらない表示のために何度も無意味に処理を繰り返すのもあまりにも非効率的なので、その時の時刻から次の表示変更時刻を計算してその少し前になったら、頻度を上げて繰り返すような処理にしておくのがよろしいかと思います。

また、ANo1様がすでにご指摘のように、クライアントの時計を利用するのは不正確の原因になりますので、正確さが必要な場合はサーバの時刻や以下のサイトなどを利用して、クライアントの時計を補正してあげるのがよろしいかと思います。
http://www.nict.go.jp/JST/JST.html
http://www2.nict.go.jp/aeri/sts/tsp/PubNtp/clien …


実際の使われ方がよくわかっていないのと、検証はしていないので、以下は考え方・やり方のご参考までに
例では、表示変更の3秒前に再実行し、それ以後は0.1秒刻みで繰り返し監視するようにしています。
(インデントには全角空白を使用)
window.onload = function(){

//表示メッセージリスト
 var message = [
  "只今タイムセール!",
  "次のタイムセールは@曜の15時~15時30分に行います"
 ];
 var elm = document.getElementById("hoge"); //表示対象要素
 var dayList = "日月火水木金土".split(""); //表示曜日名リスト
 var anHour = 60 * 60 * 1000;
 var zoneOffset = -9 * anHour; //時差(日本:-9時間決め打ち)

 function getDate(){
//正確な時刻が必要な場合は補正した時刻を返すこと
  return new Date();
 }

 function setMessage(type, day){
  elm.innerHTML = message[type].replace("@", dayList[day]);
 }


 function checkDate(){
  var d = getDate(), type = 0, day = d.getDay();
  var def = (15 * anHour) - ((d.getTime() - zoneOffset) % (24 * anHour));

  if(def > 0){
   type = 1;
  } else if((def += anHour / 2) <= 0){
   type = 1;
   def += 23.5 * anHour;
   day = ++day % 7;
  }

  setMessage(type, day);
  setTimeout(checkDate, def > 3000? def - 3000: 100);
 }

 checkDate();
}
    • good
    • 0

以下のページの感じはどうですか?


http://peacepopo.net/blog-entry-151.html
    • good
    • 1

javascriptで処理すると所詮ユーザー環境の時計を参照するので不正確


まっとうにやるならajaxで定期的に動的な部分のデータをうけとるのが妥当
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!