Big Bang

パソコンの電源を入れた時、メモリー空間に無限の宇宙が拡がる

ランダム表示

| 0件のコメント

このブログのサイドバーの広告は、毎回ランダムに表示が変わります。
自分で作ったんでGoogle AdSenseみたいに内容にマッチするわけじゃないですけど。

理屈としては、

var array=[‘string1′,’string2′,’string3’];

みたいな文字列の配列を作り、添字をランダムに生成してdocument.writeで表示させています。

JavaScriptで添字をランダムに発生させるにはMath.random()で出来るようですが、
ググるとクセがありそうなので、自作しました。

つまりソースはこうなります。

var affiliates=['affiliate1','affiliate2','affiliate3'];
document.write(affiliates[(new Date).getTime()%affiliates.length]);

青字の部分でランダムな添字を生成しています。
それ以外は見ての通りですので、青字部分のみ説明します。

(new Date).getTime()

これは下のように書いても同じです。実際に使っているソースは、これを簡略化して書いたものです。

var d=new Date();
d.getTime();

これで関数が作動したときの時刻がミリ秒単位で返されます。
その値を、配列の要素数で割った余りを添字にしています。

要素が10ある配列なら、添字は0から9までです。

10より大きな数字を10で割って割り切れれば余りは0。
割りきれなければ余りは10未満ですので1から9のどれかになります。
よって生成される添字は、必ず0から9のどれかになります。

余りを求めるには、下のように%を使います。
これは割り算という意味ではなく、余りを求めるという記号です。

a%b

これでaをbで割ったときの余りが計算されます。

例えば「3%2」なら、3から2を割ったときの余りなので、結果は1です。
「5%2」も同じく1になります。「10%4」なら余りは2、「10%2」なら余りは0です。

ですから、

var affiliates=['affiliate1','affiliate2','affiliate3'];
var d=new Date();
var n=d.getTime()%affiliates.length;

document.write(affiliates[n]);

これを、簡略化して書いたのが最初に提示した

var affiliates=['affiliate1','affiliate2','affiliate3'];
document.write(affiliates[(new Date).getTime()%affiliates.length]);

となります。

アフィリエイトの文字列を配列化するときの注意点

まず、文字列をシングルクォートまたはダブルクォートで括るときは、改行を入れてはいけません。

確かJavaScriptにヒアドキュメントはないと思うんですが、
どうしても改行を入れる必要がある時は\nを使います。

HTMLの中にダブルクォートがたくさん出てくるのでシングルクォートで囲った方が
いいですが、一部のアフィリエイト中にシングルクォートが含まれる物があります。
その場合もエスケープを忘れないようにしないとスクリプトは動きません。

HTMLのソースの中にスラッシュが2個続くURLが含まれています。
http://www.example.com/

コメントアウトと間違われないように、エスケープして\/\/と書いた方が無難です。


内容に関するご指摘、ソースに関する質問は受け付けますが、
自分のアフィリエイトが表示されないというトラブルは自分で解決してください。
アフィリエイト(ご自分の収益が目的)のトラブルに関する質問は無視します。

コメントを残す

Top