重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

bgSwitcherを使用してフェードインアウトするスライドショーを作りました。
[A固定]→[Bランダム]→[Bランダム]→[C固定]
1枚目、4枚目は指定画像に差替え表示できていますが、
2枚目、3枚目が同じ画像を表示してしまい、繰り返し再生しても再度ランダムに選んでくれず、初めに読み込んだ画像のままでした。

【実現したいこと】
●imgBをランダム読み込みし、2枚目、3枚目で同じ画像が選ばれないようにしたい
●2巡目以降も、再生のたびにランダム処理を実施する

どなたか、上記のものが実現できるように出来ないものでしょうか。
どうぞよろしくお願いいたします。

<!DOCTYPE HTML>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title></title>
<script src="js/jquery.js" type="text/javascript"></script>
<script src="js/jquery.bgSwitcher.js" type="text/javascript"></script>
<script language="javascript">
<!--
// JavaScript Document
var imgA = ["images-top/A.jpg"],
imgC = ["images-top/C.jpg"];

imgB = new Array();
imgB[0] = "images-top/B1.jpg";
imgB[1] = "images-top/B2.jpg";
imgB[2] = "images-top/B3.jpg";
imgB[3] = "images-top/B4.jpg";
imgB[4] = "images-top/B5.jpg";
n = Math.floor(Math.random()*imgB.length);

jQuery(function($) {
$('#bgSwitch-fadeOut').bgSwitcher({
images: [imgA, imgB[n], imgB[n], imgC],
interval: 1000,
fadeSpeed: 1000,
}, true);
})

-->
</script>
<style type="text/css">
.bg {
width: 160px;
height: 160px;
padding: 20px;
line-height: 1.6;
}
</style>
</head>
<body>
<div>
<div id="bgSwitch-fadeOut" class="bg">
<p>テキスト</p>
</div>
</div>
</body>
</html>

A 回答 (1件)

こんにちは。



>●imgBをランダム読み込みし、2枚目、3枚目で同じ画像が選ばれないようにしたい
これについては最初渡すときのランダム変数が同じなのが原因ですので

var n1 = Math.floor(Math.random()*imgB.length);

while ( true ) {
var n2 = Math.floor(Math.random()*imgB.length);
// n1とn2がちがっていればループ終了 同じの場合はもう一度ランダム実行
if ( n1 != n2 )
break;
}
var ctrl = $('#test').bgSwitcher ({
images : [ imgA, imgB[n1], imgB[n2], imgC ],
interval : 1000,
fadeSpeed : 1000,
},true ).data('bgSwitcher');
にすれば違う画像が表示されます。

>●2巡目以降も、再生のたびにランダム処理を実施する
についてはjquery.bgWeitcher.jsというプラグインをカスタマイズする必要があります。
プラグインの中を見ましたが現状は最初に渡された画像のみを使用し、途中で画像を書き換えることを考慮していないようです。
    • good
    • 0
この回答へのお礼

早々にご回答頂きましてありがとうございます。大変感謝感激です!
振り分けのほうだけでも分かって本当に嬉しいです。
リピートのほうについては、別プラグインを探してみようと思います。
ほんとうにどうもありがとうございました。

お礼日時:2012/02/10 16:15

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