アプリ版:「スタンプのみでお礼する」機能のリリースについて

Javascriptで、以下のような条件のプログラムが必要です。

1.jpg~8.jpgまで8枚の画像があります。
8枚の画像は、それぞれ決まった別のページにリンクしています。

1.jpg →1.html
2.jpg →2.html


8.jpg→8.html

8枚の画像を4つのグループに分ける。
グループ1 1.jpg , 2.jpg
グループ2 3.jpg , 4.jpg
グループ3 5.jpg , 6.jpg
グループ4 7.jpg , 8.jpg

グループ1から4までを1時間ごとに切り替える。
1~4時まで→グループ1をランダム表示
5~12時まで→グループ2をランダム表示
13~18時まで→グループ3をランダム表示
19~0時まで→グループ4をランダム表示

1時間ごとにランダム表示ならなんとかできたのですが、
画像リンクがそれぞれ別であることをすっかり忘れていて、
行き詰まっています。

新しい別の方法を知りたいので、すみませんが
うまくいかなかったソースは掲載していません。

お分かりになる方がおられましたら、
プログラムをお教えいただけないでしょうか?

よろしくお願いします。

A 回答 (2件)

>新しい別の方法


と、あるので、どう答えてよいのか困ります。でっ、マジ短く。

<p><a href="1.html" id="a"><img src="1.jpg" id="b" alt="*"></a></p>
<script type="text/javascript">
j=+'711113333333355555577777'.charAt((new Date).getHours())+Math.random()*2|0
with(document)getElementById('a').href=j+'html',getElementById('b').src='./img/'+j+'.gif'
</script>
    • good
    • 0

>1時間ごとにランダム表示ならなんとかできたのですが、


そこまでできていれば、対象とするデータを時間によって入れ替えてあげるだけですむでしょう。

配列に、
var data = [
{ time:[1, 4], image:['1.jpg, 1.html', '2.jpg, 2.html'] },
 ・・・・
];
みたいに定義しておくとか。
(扱いやすい形であればなんでもよい)

指定の1~8がそのままで良いのなら、定義しておかなくても、画像名やリンク先を index + '.jpg' とか index + '.html' みたいにして求めることも可能です。


>新しい別の方法を知りたいので、
現在の方法が不明なので、同じなのか別なのか判別できません。
すぐに思いつくのは。

◇時間の判別方法
1)↑の例示のように、開始・終了の両方を抑えその間であることを判定
2)連続しているなら、両方でなくても、開始だけ比較すればよい
3)6時間毎に割り振るなら、時刻を6で割って求める

◇時間ごとのセット
1)setTimeoutやIntervalで定期的に時間をチェックする。
2)最初に時間をチェックして、次の時間の変わり目までを計算し、
 それに合わせて間隔をセットし、時間を確認するようにする。
 (誤差を吸収する仕組みが必要)
3)多少の時間誤差が合っても良いのなら、2)で最初にセットしたら、あとは
 無条件に6時間毎に画像を変えるルーチンを動かす。(Dateは確認しない)

◇データの持ち方
1)↑の例示のようにセットにして定義しておく。
2)内容ごとに変数を変えて配列で定義。
3)ご提示のように機械的に計算可能な時刻、文字列である場合は
 データ定義などせず、計算値で求めてしまう。

ぐらいかな。組み合わせ方で3^3になるので27通り?(…と言えるのか?)


と思ったら、あれっ?
>グループ1から4までを1時間ごとに切り替える
1~4のグループは時間指定があるから、切り替わらないでしょう。
同じグループ内で、画像を選択し直すのなら意味はわかるけれど、1グループに画像が2個しかないみたいなので、切り替えると言っても…
(同じものの連続を許すか許さないかで大きく変わる)

なので、↑の「6時間ごと」は1時間毎ということになるのかな?
    • good
    • 0

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