【Javascript】下記ソースで、5つの中からテキストを1つランダム表示しています。

ソース改変でテキストを2つ(互いはかぶらないように)表示させる方法を教えてください。

var num = 5;
var Ads = new Array( );

Ads[0] = ( '<script type="text/javascript" src="テキスト1.js" ></script>' );
Ads[1] = ( '<script type="text/javascript" src="テキスト2.js" ></script>' );
Ads[2] = ( '<script type="text/javascript" src="テキスト3.js" ></script>' );
Ads[3] = ( '<script type="text/javascript" src="テキスト4.js" ></script>' );
Ads[4] = ( '<script type="text/javascript" src="テキスト5.js" ></script>' );

Rnd = Math.floor( Math.random ( ) * num );
document.write( Ads[Rnd] );

-----
<body>
<script type="text/javascript" src="上のスクリプト.js"></script>
</body>

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2008/05/20 00:14:51
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント27pt

2つめを Rnd2 とすると、以下のような感じでどうでしょうか。

~省略~
Rnd = Math.floor( Math.random ( ) * num );
document.write( Ads[Rnd] );

do {
    Rnd2 = Math.floor(Math.random ( ) * num);
} while (Rnd2 == Rnd);
document.write(Ads[Rnd2]);
~省略~
id:kentajoy

大変参考になりました。有り難うございます。

2008/05/20 00:14:08

その他の回答2件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633ここでベストアンサー

ポイント27pt

2つめを Rnd2 とすると、以下のような感じでどうでしょうか。

~省略~
Rnd = Math.floor( Math.random ( ) * num );
document.write( Ads[Rnd] );

do {
    Rnd2 = Math.floor(Math.random ( ) * num);
} while (Rnd2 == Rnd);
document.write(Ads[Rnd2]);
~省略~
id:kentajoy

大変参考になりました。有り難うございます。

2008/05/20 00:14:08
id:rudeboyjet No.2

回答回数11ベストアンサー獲得回数1

ポイント27pt
var max = 5;                                                                    
Ads = [];                                                                       
for(n = 0; n < 5; n++){                                                         
  Ads[n] = ( '<script type="text/javascript" src="テキスト'+(n+1).toString()+'.\
js" ></script>' );                                                              
}                                                                               
for(n = 0; n < 2; n++){                                                         
  index = Math.floor(Math.random() * Ads.length) ;                              
  str = Ads.splice(index, 1)[0].toString();                                     
  alert(str);                                                                   
}                  

こんな感じでいかがでしょう?

id:kentajoy

大変参考になりました。有り難うございます。

2008/05/20 00:14:11
id:GoldenDawn No.3

回答回数426ベストアンサー獲得回数81

ポイント26pt
if (typeof(Ads) == 'undefined') {
var Ads = [
  '<script type="text/javascript" src="テキスト1.js" ></script>',
  '<script type="text/javascript" src="テキスト2.js" ></script>',
  '<script type="text/javascript" src="テキスト3.js" ></script>',
  '<script type="text/javascript" src="テキスト4.js" ></script>',
  '<script type="text/javascript" src="テキスト5.js" ></script>'
  ] ;
}
var Rnd = Math.floor(Math.random()*Ads.length) ;
var Tmp = Ads[Ads.length-1] ;
Ads[Ads.length-1] = Ads[Rnd] ;
Ads[Rnd] = Tmp ;

document.write(Ads.pop()) ;

ただし、変数 Ads を他で使っていないこと。

id:kentajoy

大変参考になりました。有り難うございます。

2008/05/20 00:14:12

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません