• ベストアンサー

バナーのランダム表示(複数、重複不可、個数限定)

同じような質問はありますが、少し発展系なので質問させてください。 また、他で検索してみたのですが、同じようなものがなかったので。 10個(増殖可能)のバナー(リンク付き画像)をランダムに5個(バナー重複はない状態)だけ表示させたいのですが、どのようにしたらよいのでしょうか? 補足:使用方法としては、外部で読み込み、<TD>に表示させようとしています。 よろしくお願いします。ご教授ください。

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.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~)は適宜修正して下さい。 ※インデントに全角空白を使っているので、コピーする場合はタブなどに置換して下さい。

関連するQ&A