人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

JSにて時間帯によって画像を切り替えたい+αで
24時間中、○時?○時30分までは a.jpg、
○時30分?(○+1)時は b.jpg、
(○+1)時?(○+1)時30分 は a.jpg、 (○+1)時30分?(○+2時は b.jpg …
と、要するに0?30分まではa.jpg、30?60分はb.jpg
といったように繰り返すことで、閲覧者を2分の1にふるいたいと思うのですが、
条件を分岐してダラっと24時間分書く以外に、ギュッとスマートにすることは出来ますでしょうか?
時間の区切りは30分毎でなくても、1分・10分でもいいです。
大多数の閲覧者に対して大まかに2グループ分けたい考えからの発想ですが、
スマートであれば他の方法でも構いません、

皆様、どうぞ宜しくお願い致します。

●質問者: mikomeko
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● munyaX
●50ポイント

動作確認してないですが、以下のような感じでどうでしょうか?

image/0.jpg, image/1.jpg を用意する感じです。

var now = new Date();
var img = 'image/' + Math.floor( now.getMinutes()/30 ) + '.jpg';

mikomekoさんのコメント
今度から素人って入れますね。 動作確認していないとおっしゃっていたのと汎用性に欠けていたので他の方よりポイント低くしてしまいましたが、 50ptってぼやかれるほど低いポイントなのでしたら謝りますね。。

munyaXさんのコメント
どうでも良いのですが、 一般的なプログラマーの場合、このような設問の場合は動作確認の有無はあまり意味がないんですよね。 「現在分を30で割れば2通りの結果が得られる」というロジックに気がつくかどうかというのが一番大切で、それさえ分かってしまえば実現する方法はリファレンスでも眺めれば簡単に書ける部分なのです。 汎用的、というのが配列のインデックスにするという意図であれば、職業プログラマであれば気がついて当たり前の部分なので…。 趣味で書かれているのであれば、難しいのかもしれないですね。

2 ● Cherenkov
●200ポイント ベストアンサー

じゃあ0.jpg, 1.jpg以外のファイル名にする方法
demo: http://jsfiddle.net/f3urC/

<html>
<head>
<meta charset="UTF-8">
<script>
window.onload = function() {
var srcs = ['http://www.hatena.ne.jp/images/badge-q-used-hover.gif', 'http://www.hatena.ne.jp/images/badge-b-used-hover.gif'];
var now = new Date();
var imgSrc = srcs[Math.floor(now.getMinutes()/30)];
document.getElementById('logo').src = imgSrc;
};
</script>
</head>
<body>
<img id="logo" src="">
</body>
</html>


このあたりの本を読んで勉強するといいですよ。ブラウザはFirefox、アドオンのFirebugがおすすめ。


Cherenkovさんのコメント
追記しました

mikomekoさんのコメント
ご丁寧にjsfiddleまでありがとうございます。 そのまま試せました! ここの皆様がお優しいのと、 本職でないのでなかなか勉強できないところですが、せっかくなので一冊購入してみようかと思います。(が結構なお値段なんですね。。。)

3 ● tdoi
●200ポイント

大まかに分けたいだけなら、これで十分ではないかと思います。

<script language="JavaScript">
var images = new Array();
images[0] = 'a.jpg';
images[1] = 'b.jpg';
var num = Math.floor(Math.random() * images.length);
document.write('<img src="' + images[num] + '"/>');
</script>

mikomekoさんのコメント
素人質問申し訳ないのですが、”Math.random”というのは 本当に乱数なのでしょうか? つまりは個人のアクセスに対してランダムであり、大多数を対象としたときに規則性はないのか。 結果で大きく2グループに分けれるのか不安があるのですが…

tdoiさんのコメント
乱数生成の実装次第である程度の規則性はあるでしょうが、Math.randomは乱数です。 規則性はあるでしょうが、アクセスが多かった場合に大雑把に2分したいのであれば、これで十分かと思ってます。 シード次第ですが、 http://d.hatena.ne.jp/kogecoo/20110131/1296492140 なんかの記事とかから推測すると、シードもかぶりにくいかなと。 もちろん、絶対に片方に偏らない保証はないですが、それは、アクセスの時刻であっても同じかと思っています。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ