プロが教える店舗&オフィスのセキュリティ対策術

同じような質問はありますが、少し発展系なので質問させてください。
また、他で検索してみたのですが、同じようなものがなかったので。

10個(増殖可能)のバナー(リンク付き画像)をランダムに5個(バナー重複はない状態)だけ表示させたいのですが、どのようにしたらよいのでしょうか?

補足:使用方法としては、外部で読み込み、<TD>に表示させようとしています。

よろしくお願いします。ご教授ください。

A 回答 (1件)

バナーをセットした配列をシャッフルすれば、重複なくランダムにバナーを選ぶことができます。



以下、サンプル(動作確認済み)

var ads = new Array();
ads[ads.length] = 'バナー1';
ads[ads.length] = 'バナー2';
ads[ads.length] = 'バナー3';
ads[ads.length] = 'バナー4';
ads[ads.length] = 'バナー5';
ads[ads.length] = 'バナー6';
ads[ads.length] = 'バナー7';
ads[ads.length] = 'バナー8';
ads[ads.length] = 'バナー9';
ads[ads.length] = 'バナー10';

function write_ad() {
  shuffle(ads);
  for (var i = 0; i < 5; i++) {
    document.write(ads[i], "<br>");
  }
}

function shuffle(array) {
  for (var i = array.length; --i; ) {
    var r = Math.floor(Math.random() * (i+1));
    if (r != i) {
      var tmp = array[i];
      array[i] = array[r];
      array[r] = tmp;
    }
  }
}

※これを外部スクリプトファイルとして保存し、必要なHTMLで呼び出して write_ad(); を実行して下さい。
※表示部分(document.write~)は適宜修正して下さい。
※インデントに全角空白を使っているので、コピーする場合はタブなどに置換して下さい。
    • good
    • 0

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