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

初心者です。よろしくお願い致します。

複数ページ存在するうちの、各ページを更新するごとにランダムに変わる、重複しない5枚の画像を表示させたいと思います。

今現在、サイト上に掲載されてあったJavaScriptのサンプルを自分なりに変更してテストしているのですが、「重複しない」というところで壁にぶち当たってしまっています。
下記が現在のスクリプトです。

<body>
<script language="JavaScript"><!--
jumpURL = new Array();
imgURL = new Array();
jumpURL[0] = "アドレス";
jumpURL[1] = "アドレス
jumpURL[2] = "アドレス";
jumpURL[3] = "アドレス";
jumpURL[4] = "アドレス";
jumpURL[5] = "アドレス";
jumpURL[6] = "アドレス";
jumpURL[7] = "アドレス";
imgURL[0] = "top_img01.jpg";
imgURL[1] = "top_img02.jpg";
imgURL[2] = "top_img03.jpg";
imgURL[3] = "top_img04.jpg";
imgURL[4] = "top_img05.jpg";
imgURL[5] = "top_img06.jpg";
imgURL[6] = "top_img07.jpg";
imgURL[7] = "top_img08.jpg";

a = Math.floor(Math.random()*jumpURL.length);
document.write("<a href='"+jumpURL[a]+"'>");
document.write("<img src='"+imgURL[a]+"' border='0'><br>");
document.write("</a>");

b = Math.floor(Math.random()*jumpURL.length);
document.write("<a href='"+jumpURL[b]+"'>");
document.write("<img src='"+imgURL[b]+"' border='0'><br>");
document.write("</a>");

c = Math.floor(Math.random()*jumpURL.length);
document.write("<a href='"+jumpURL[c]+"'>");
document.write("<img src='"+imgURL[c]+"' border='0'><br>");
document.write("</a>");

d = Math.floor(Math.random()*jumpURL.length);
document.write("<a href='"+jumpURL[d]+"'>");
document.write("<img src='"+imgURL[d]+"' border='0'><br>");
document.write("</a>");

e = Math.floor(Math.random()*jumpURL.length);
document.write("<a href='"+jumpURL[e]+"'>");
document.write("<img src='"+imgURL[e]+"' border='0'><br>");
document.write("</a>");

// --></script>
</body>

現在では、画像枚数が8枚ですが、4、50枚に増える予定です。
また、スクリプトを書きやすくするために画像ファイルの名前をどのように変更してもかまわないと思っています。
上記のスクリプトは5枚の画像が表示されることはされるのですが、更新してから表示するまでの待ち時間が長いのが気になるので、できれば、欲を言うならば、早く表示してくれるようなスクリプトをご伝授していただければと思います。

よろしくお願い致します。

A 回答 (2件)

シャッフルする部分と表示する部分をわけるとわかりやすい



<head>
<script>
jumpURL =[
{url:"アドレスA",alt:"A",img:"top_img01.jpg"}
,{url:"アドレスB",alt:"B",img:"top_img02.jpg"}
,{url:"アドレスC",alt:"C",img:"top_img03.jpg"}
,{url:"アドレスD",alt:"D",img:"top_img04.jpg"}
,{url:"アドレスE",alt:"E",img:"top_img05.jpg"}
,{url:"アドレスF",alt:"F",img:"top_img06.jpg"}
,{url:"アドレスG",alt:"G",img:"top_img07.jpg"}
,{url:"アドレスH",alt:"H",img:"top_img08.jpg"}
];
jumpURL.shuffle=shuffle;
jumpURL.shuffle();
function shuffle(){
var temp=0;
for(var i=0;i<this.length -1 ;i++){
var num=Math.floor(Math.random()*(this.length-i));
temp=this[i];
this[i]=this[num+i];
this[num+i]=temp;
}
}
</script>
</head>
<body>
<script>
for(var i=0;i<5;i++){
document.write("<a href='"+jumpURL[i].url+"'><img src='"+jumpURL[i].img+"' alt='"+jumpURL[i].alt+"' border='0'></a><br>");
}
</script>
</body>
    • good
    • 0
この回答へのお礼

なるほど!for文でループさせればいいんですね!
わかりやすい回答をありがとうございました。
おかげで無事解決しました!

お礼日時:2008/09/17 20:08

<html>


<body>
<script>
var url =[
'http://www.0', 'http://www.1','http://www.2', 'http://www.3',
'http://www.4', 'http://www.5', 'http://www.6', 'http://www.7'
];
var imgfile =[
'img0.gif','img1.jpg','img2.jpg','img3.jpg',
'img4.jpg','img5.jpg','img6.jpg','img7.jpg'
];
var n=5;
var n2=imgfile.length;
for(var i=0,f=[],bf=[];i<n;i++) {
while(f[rd=Math.random()*n2|0]); f[rd]=1;
document.write('<img src="'+imgfile[rd]+'" alt="'+imgfile[rd]+'" onClick="location.href=\''+url[rd]+'\'"><br>');
}
</script>
</body></html>
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
いろんなやり方があって、とても勉強になりました(^^)
お手間をおかけしました!

お礼日時:2008/09/17 20:10

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