Random Link

Description:

ランダムにリンクします。

Demo:

(ボタンに反応)

ランダムにリンクします。 (リンクに反応)

Source:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>

<script language="JavaScript" type="text/javascript">
<!--


function randomlink() {
 var randlink = new Array();
 var randlink_count = 0;
 //ランダムリンク先のURLを設定
 randlink[randlink_count++] = "http://www.yahoo.co.jp/"; 
 randlink[randlink_count++] = "http://www.goo.ne.jp/";
 randlink[randlink_count++] = "http://www.infoseek.co.jp/";
 randlink[randlink_count++] = "http://www.excite.co.jp/";

 //更に設定するURLを増やしたい場合は、
 //randlink[randlink_count++] = "URL";
 //を増やしたい分だけ書き続ける。
 
 location.href = randlink[Math.floor(Math.random() * randlink.length)];
}


//-->
</script>

</head>

<body>


<form method="post">
<input type=button onClick="randomlink()" value="ランダムにリンクします。"> (ボタンに反応)
</form><br>


<a href="JavaScript:randomlink()">ランダムにリンクします。</a> (リンクに反応)



</body>
</html>

Advice:

Arrangement:

同ページ内にある全てのリンクを対象に行う [デモ]

同じページ内にある全てのリンクを対象にランダムリンクを行います。 同じページ内にあるリンクを自動検出してランダムリンクを行うため、 いちいち手動で登録する手間を省けます。

function randomlink(){...} の中身を次のように書き換えます。

function randomlink() {
 if(document.links.length == 0) { alert("リンクが一つもありません。"); return; }

 var onlyhttp = true; // HTTPプロトコルの付いたリンク("http://")のみリンクを行う。true/false

 var exclusivelink_count = 0;
 var exclusivelink = new Array();
 //排他するURLの登録。これらのURLを選択しないようにします。
 exclusivelink[exclusivelink_count++] = "http://www.yahoo.co.jp/";

 var loopcount = 0;
 var flag = false;
 var url  = "";

 while(!flag) {
  var locflag = 0;
  url = document.links[Math.floor(Math.random() * document.links.length)].href;
  if(url.toLowerCase().indexOf("javascript:") != -1) { locflag++; }
  if(onlyhttp) { if(url.toLowerCase().indexOf("http://")==-1) locflag++; }
  for(i=0; i<exclusivelink.length; i++) {
   if(url == exclusivelink[i]) { locflag++; }
  }
  if(locflag==0) { flag = true; }
  if(++loopcount>100) { url = ""; flag = true; }
 }

 if(url != "") {
  location.href = url;
 } else {
  alert("対象となるリンクが見つかりません。"); //エラー
 }
}

特殊効果をつけてみる (+fadein) [デモ]

ランダムリンクの際フェードインの効果をつけます。

スクリプトの中に以下のコードを追加します。

function fadeinGetColor(scol, fcol, steps, count) {
 scol = (scol.charAt(0)=="#") ? scol.substring(1, scol.length) : scol;
 fcol = (fcol.charAt(0)=="#") ? fcol.substring(1, fcol.length) : fcol;
 var scol_red  = parseInt(scol.substring(0,2), 16);
 var scol_green= parseInt(scol.substring(2,4), 16);
 var scol_blue = parseInt(scol.substring(4,6), 16);
 var fcol_red  = parseInt(fcol.substring(0,2), 16);
 var fcol_green= parseInt(fcol.substring(2,4), 16);
 var fcol_blue = parseInt(fcol.substring(4,6), 16);
 var new_red   = Math.round(((fcol_red  - scol_red)  / steps) * count) + scol_red;
 var new_green = Math.round(((fcol_green- scol_green)/ steps) * count) + scol_green;
 var new_blue  = Math.round(((fcol_blue - scol_blue) / steps) * count) + scol_blue;
 new_red  = (new_red.toString(16).length==1) ? "0"+new_red.toString(16) : new_red.toString(16);
 new_green= (new_green.toString(16).length==1) ? "0"+new_green.toString(16) : new_green.toString(16);
 new_blue = (new_blue.toString(16).length==1) ? "0"+new_blue.toString(16) : new_blue.toString(16);
 return "#"+ new_red+new_green+new_blue;
}

function fadein(scol, fcol, steps, time, func, count) {
 if(navigator.appName=="Netscape" && !document.images) { return; }
 if(!count) { count = 0;  }
 if(!time)  { time  = 30; }
 if(!func)  { func  = ""; }
  
 document.bgColor = fadeinGetColor(scol, fcol, steps, count);

 if(++count <= steps) {
  setTimeout("fadein('" +scol+ "','" +fcol+ "'," +steps+ "," +time+ ",\"" +func+ "\"," +count+ ")", time);
 } else { if(func) eval(func); }
}

呼び出しのボタンを以下のように書き換えます。

<form method="post">
<input type=button onClick="fadein('#ffffff','#ff0000', 30, 30, 'randomlink()');" value="ランダムにリンクします。"> (ボタンに反応)
</form><br>

Browser:

Internet Explorer3.0以上
Netscape Navigator3.0以上