リロードすると複数の画像のうち一つをランダム表示させるスクリプトで、「一つ前の画像を除いて、残りの画像からランダムに表示(つまり連続して同じ画像が出ないようにする)」にさせたいと思います。http://www.egroups.co.jp/files/test_test_test_test_test_test/に現状のソースをあげましたので誰かご教授お願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答3件)

id:inokuni No.1

回答回数1343ベストアンサー獲得回数21

ポイント5pt

<BODY>

<HEAD>

<TITLE>ランダムイメージ(同じものを連続して表示しないバージョン)</TITLE>

<SCRIPT LANGUAGE=”JavaScript”>

<!--

function getCookie(item) {

var i, index, arr;

arr = document.cookie.split(”;”);

for(i = 0; i < arr.length; i++) {

index = arr[i].indexOf(”=”);

if(arr[i].substring(0, index) == item || arr[i].substring(0, index) == ” ” + item) return arr[i].substring(index + 1);

}

return ””;

}

function setCookie(item, value, d) {

document.cookie = item + ”=” + value + ”;expires=” + d;

}

// -->

</SCRIPT>

</HEAD>

<BODY>

<h3>ランダムイメージ(同じものを連続して表示しないバージョン)</h3>

<SCRIPT LANGUAGE=”JavaScript”>

<!--

var l, k, d, previsit, expire, preimgno;

my_pics=new Array();

my_pics[0] = ’img/pic_01.jpg’;

my_pics[1] = ’img/pic_02.jpg’;

my_pics[2] = ’img/pic_03.jpg’;

my_pics[3] = ’img/pic_04.jpg’;

my_pics[4] = ’img/pic_05.jpg’;

my_pics[5] = ’img/pic_06.jpg’;

my_pics[6] = ’img/pic_07.jpg’;

my_pics[7] = ’img/pic_08.jpg’;

my_pics[8] = ’img/pic_09.jpg’;

my_pics[9] = ’img/pic_10.jpg’;

my_pics[10] = ’img/pic_11.jpg’;

my_pics[11] = ’img/pic_12.jpg’;

my_pics[12] = ’img/pic_13.jpg’;

my_pics[13] = ’img/pic_14.jpg’;

my_pics[14] = ’img/pic_15.jpg’;

my_pics[15] = ’img/pic_16.jpg’;

my_pics[16] = ’img/pic_17.jpg’;

my_pics[17] = ’img/pic_18.jpg’;

my_pics[18] = ’img/pic_19.jpg’;

my_pics[19] = ’img/pic_20.jpg’;

my_pics[20] = ’img/pic_21.jpg’;

my_pics[21] = ’img/pic_22.jpg’;

my_pics[22] = ’img/pic_23.jpg’;

my_pics[23] = ’img/pic_24.jpg’;

my_pics[24] = ’img/pic_25.jpg’;

d = new Date();

d.setTime(d.getTime() + 24*60*60*1000); //24時間後

expire = d.toGMTString();

preimgno = getCookie(”preimgno”);

if(preimgno) {

k = 0;

my_pics2=new Array();

for(l=0; l<my_pics.length; l++){

if(l != preimgno){

my_pics2[k] = my_pics[l];

k++;

}

}

xx = Math.floor(Math.random() * my_pics2.length);

if(xx >= preimgno){

setCookie(”preimgno”, xx + 1, expire);

}else{

setCookie(”preimgno”, xx, expire);

}

document.write(”前のイメージ

<img src=¥””+my_pics[preimgno]+”¥” alt=¥””+my_pics[preimgno]+”¥”>”);

document.write(”

前のイメージを除いたランダムイメージ

<img src=¥””+my_pics2[xx]+”¥” alt=¥””+my_pics2[xx]+”¥”>”);

}else{

xx = Math.floor(Math.random() * my_pics.length);

setCookie(”preimgno”, xx, expire);

document.write(”

初めてのアクセス

<img src=¥””+my_pics[xx]+”¥” alt=¥””+my_pics[xx]+”¥”>”);

}

d2 = new Date();

d2.setTime(d.getTime() - 24*60*60*1000); //24時間前

expire2 = d2.toGMTString();

document.write(”

<input type=¥”button¥” onclick=¥”setCookie(’preimgno’, null, expire2);¥” value=¥”cookie 消去¥”>”);

// -->

</SCRIPT>

</BODY>

id:mizox

ありがとうございます。

とりあえず次の回答もみて、後で試してみます。

2003/08/25 14:50:39
id:gaba No.2

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

ポイント40pt

Cookie の読み込み時に「theName += ”=”;」として、その後 indexOf で位置情報を取得しているようですが、

Cookie のデータは escape 処理されているために、= は %3D として記録されています。

先に escape する処理を持ってくれば解決しそうですが、作ってしまったのでそちらを参照下さい。

id:mizox

ありがとうござます。

2003/08/25 14:52:24
id:sasada No.3

回答回数1482ベストアンサー獲得回数133

ポイント25pt

http://www.hatena.ne.jp/1061780093#

リロードすると複数の画像のうち一つをランダム表示させるスクリプトで、「一つ前の画像を除いて、残りの画像からランダムに表示(つまり連続して同じ画像が出ないようにす.. - 人力検索はてな

 URLはダミーです。

 gabaさんの回答のwhile(1)ループ全体を下記と置き換えると、ループ恐怖症の人でもOKかも。

numbers=Math.floor(Math.random()*my_pics.length - 1);

if (numbers >= check) {

++numbers;

}

やっていること:

 前回表示の番号を除いた数で、乱数計算。

 前回表示をとばして、numbersを計算。

id:mizox

ありがとうございました。

結局、まだ解決できていないのですが、

とりあえず回答を終了したいと思います。

2003/08/28 20:01:34

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

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

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

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

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