人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: mizox
●カテゴリ:ウェブ制作
✍キーワード:スクリプト ソース ランダム リロード 教授
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● いのくに
●5ポイント

http://www.egroups.co.jp/files/test_test_test_test_test_test/

Yahoo!グループ

<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>

◎質問者からの返答

ありがとうございます。

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


2 ● gaba
●40ポイント

http://espion.s7.xrea.com/hatena_js.txt

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

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

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

◎質問者からの返答

ありがとうござます。


3 ● sasada
●25ポイント

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を計算。

◎質問者からの返答

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ