プロが教えるわが家の防犯対策術!

リンク先のURLを記述せずに、Javascriptでランダムリンクを貼る方法をさがしています。

いまWEBサイトを作っていて、
ランダムリンクのページを追加するときに、
簡単な方法はないのか探しています。

ちょっとこれでは意味がわからないと思うので、
説明させてください。

いま作っているサイトの問題点は、
ランダムリンクで飛んだページに、
ランダムリンクのボタンがあるので、
ページを増やすごとに、それぞれのhtmlを書き換えなければならないところです。


いま書いてあるのは、このような体裁です。


────────────────────────────────────────

★javascript

<script language="JavaScript"><!--
myCnt = 6; // リンク先の数
myTable = new Array( // リンク先の登録
"page1.html",
"page2.html",
"page3.html",
"page4.html",
"page5.html",
);

function myRndLink(){ // 適当に選んでリンクする関数
myRnd = Math.floor(Math.random()*myCnt); // 0~(myLine-1)の乱数を求める
location.href = myTable[myRnd]; // リンクする
}
// --></script>

★ボタン↓
<input type="image" img src="randam.jpg" "onclick="myRndLink()">


────────────────────────────────────────


それぞれのpage内にランダムリンクがありますので、
page6を追加する場合、上のpage1~5それぞれのhtmlに、
「page6」を追加して記述せねばなりません。
pageを増やすごとに、労力がかかるのは、ちょっとしんどいです。

自分が考えた打開策は、


 (1)指定したフォルダの中からランダムリンクするような方法


これであれば、新しく作ったページをフォルダ内に入れるだけなので簡単かと。


 (2)あるファイル名(例えば、page)を含むものからランダムリンクするような方法


これであれば、新しく作ったページの名前を「page●●」にするだけなので簡単かと。


javaはまったく読むことができないので、
親切な方のサイトからコピペして使っていますが、
上のような方法は可能なのでしょうか?
検索しても出てきませんでした。

みなさん、よろしければ知恵をお貸しください。
よろしくおねがいします。

A 回答 (2件)

Javascriptを外部ファイルにする



myTable = new Array(
"page1.html",
"page2.html",
"page3.html",
"page4.html",
"page5.html");

function myRndLink(){
myRnd = Math.floor(Math.random()*myTable.length);
location.href = myTable[myRnd];
}

以下はscript.jsで保存した場合。

各HTMLファイルの<head></head>内に
<script language="JavaScript" src="script.js"></script>
を追記。

<head>
<script language="JavaScript" src="script.js"></script>
<title>???</title>
</head>

こんな感じ。

編集は外部ファイルにしたJavascriptファイルのみで済む。

この回答への補足

いま試してみたら、かんたんにできました!

<script language="JavaScript"><!--
myCnt = 6; // リンク先の数

これ、いらないんですね。

助かりました!ありがとうございます。

補足日時:2010/07/12 22:07
    • good
    • 0
この回答へのお礼

orzroooさま


ありがとうございます。
わかりやすいです。

CSSにJavaScriptが記述できないというのは、
調べてわかりましたが、ふつうにファイルとして読み込めるのですね。

助かりました!

お礼日時:2010/07/12 21:42

javascriptが読めないのであれば、まず読めるようになってからでは?と思いますが。


そもそもランダムリンク、ちゃんと出来てます?
出来ているように見えないのですが…。


まず、
<script language="JavaScript">
の書き方は古いブラウザ用。

myCnt = 6; // リンク先の数
数は5つなので5のはず。というか不要。

myTable = new Array( // リンク先の登録
"page1.html",
"page2.html",
"page3.html",
"page4.html",
"page5.html", ←「,」が不要。最後の要素なので。
);

myRnd = Math.floor(Math.random()*myCnt); // 0~(myLine-1)の乱数を求める
myCntが不要。myTable.lengthにする。

<input type="image" img src="randam.jpg" "onclick="myRndLink()">
いろいろ変なかんじ。
<input type="image" src="randam.jpg" alt="画像" onclick="myRndLink()">

たとえば、
<script type="text/javascript">
<!--
function getLinks(){
var myTable = new Array(
"page1.html",
"page2.html",
"page3.html",
"page4.html",
"page5.html"
);
return myTable;
}
//-->
</script>
<script type="text/javascript">
<!--
function myRndLink(){ // 適当に選んでリンクする関数
var links = getLinks();
var myRnd = Math.floor(Math.random()*links.length);
location.href = links[myRnd]; // リンクする
}
//-->
</script>
</head>
<body>
<p><input type="image" src="randam.jpg" alt="画像" onclick="myRndLink()"></p>
</body>
</html>

こんな感じにしておいて、それぞれ外部ファイル化して、各ページに置いて、
ページが増えるたびにmyTableがある外部ファイルを書き換えればよいのでは。
それなら一度で済みます。
    • good
    • 0
この回答へのお礼

zeffさま

ごていねいにありがとうございます。

説明のためにpageを少なくしたのですが、
そのままコピペしたほうがよかったですね。
申し訳ありません。

CSSのように外部ファイルにすればいいんですね。
がんばってみます!

お礼日時:2010/07/12 21:38

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