<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>
Cookie の読み込み時に「theName += ”=”;」として、その後 indexOf で位置情報を取得しているようですが、
Cookie のデータは escape 処理されているために、= は %3D として記録されています。
先に escape する処理を持ってくれば解決しそうですが、作ってしまったのでそちらを参照下さい。
ありがとうござます。
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を計算。
ありがとうございました。
結局、まだ解決できていないのですが、
とりあえず回答を終了したいと思います。
ありがとうございます。
とりあえず次の回答もみて、後で試してみます。