電子書籍の厳選無料作品が豊富!

3枚の画像をタイマー設定して、ローテーション表示させるバナーを作成したいのですが、それぞれの画像に別のリンク先を設定する記述方法を教えて下さい。
とりあえず、ローテーション表示させるために、下記のように記述してみました。

<html>
<head>
<title>画像切替とリンク先</title>
<script language="JavaScript">
<!--
var Imgs=new Array(2);
var cnt=0;
Imgs[0]="01.gif";
Imgs[1]="02.gif";
Imgs[2]="03.gif";
function anime(){
document.gazo.src=Imgs[cnt++];
if(cnt==3)cnt=0 }
--></script>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<a href="#"><img src="01.gif" name="gazo" onLoad="setTimeout('anime()',12000)" border=0></a>
</body>
</html>

まったく他の記述方法でもOKです。
宜しくお願いします。

A 回答 (2件)

横槍を入れるようで恐縮ですが…


先の方への補足を読ませていただきました。

補足の中で問題になっている画像とリンク先のずれについては、画像を入れ替えさせている部分の記述の仕方に原因があるようです。
質問者様のソースでは、

document.gazo.src=Imgs[cnt++];

と記述されていますが、この記述だとgazoのimg要素の参照先を配列Imgsのcnt番目の要素のURLに変え、その後にcntに1を加える処理になっているようです。 インクリメントの処理が、画像を入れ替えた後に行われるため、この関数の処理が終了した時点で保持されているcntが、表示されている画像のURLを収めた配列の要素番号に1を加えた値になり、リンククリックの時のページジャンプ先が思惑とはずれているものと思われます。
この部分を修正すれば、配列内容の順番を入れ替えなくても対応できると思います。

以下、具体的な修正案です。

<html>
<head>
<title>画像切替とリンク先</title>
<script language="JavaScript">
<!--
var Imgs=new Array();
var URLs=new Array();
var cnt=0;
Imgs[0]="01.gif";
Imgs[1]="02.gif";
Imgs[2]="03.gif";
/* 画像のURLを定義 */

URLs[0]="http://www~01.html";
URLs[1]="http://www~02.html";
URLs[2]="http://www~03.html";
/* ジャンプ先のURLを定義 */

function anime(){
cnt++;
if(cnt==3) {cnt=0;}
//cntを書き換える処理を先に

document.gazo.src=Imgs[cnt];
}

function location_href(){
window.open(URLs[cnt],"_blank");
}

--></script>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<a href="#" onClick="location_href(); return false;"><img src="01.gif" name="gazo" onLoad="setTimeout('anime()',12000)" border=0></a>
</body>
</html>

ウィンドウを開く処理のソースを簡素化するために、ジャンプ先のURLも配列に収めるようにしました。
また、常に新しいウィンドウで表示させることを狙っているものと判断して、ウィンドウ名も修正してあります。 (常に新しいウィンドウを開く場合には、元ソースでは"blank"となっている部分は、"_blank"と表記する必要があるでしょう) もし同じウィンドウを再利用したい場合は、この_blankの部分に任意の名前を半角英数で付けてください。
あと、リンクのonClickに対しては、通常のa要素のページジャンプ処理を止めるためにreturn falseを追加しました。

横から失礼しました。 参考まで…
    • good
    • 0
この回答へのお礼

お礼が大変遅くなりまして、本当に申し訳ありません。アドバイス、ありがとうございました。おかげさまで、希望どおりの動きを作ることができました。ソースの説明もとても解りやすく書いていただいて、助かりました。

お礼日時:2004/12/08 20:44

var hrefs=new Array(3) //3つの時は3ですよ


hrefs[0]="01.html";
hrefs[1]="02.html";
hrefs[2]="03.html";
とかして
<a href="#">を
<a ID="ROTLINK" href="#">
とかして
document.gazo.src=Imgs[cnt++];の次に
document.getElementById("ROTLINK").href=hrefs[cnt];
とすればいいのではないでしょうか

この回答への補足

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

実は、リンク先を別ウィンドウで表示させたかったこともあり、その後試行錯誤の上、下記のように書いてみました。

<html>
<head>
<title>画像切替とリンク先</title>
<script language="JavaScript">
<!--
var Imgs=new Array(3);//ありがとうございました!
var cnt=0;
Imgs[0]="01.gif";
Imgs[1]="02.gif";
Imgs[2]="03.gif";

function anime(){
document.gazo.src=Imgs[cnt++];
if(cnt==3)cnt=0;}

function location_href(){
if (cnt==0 ){
window.open("http://www~01.html","blank","");
} else if (cnt==1) {
window.open("http://www~02.html","blank","")
} else if (cnt==2) {
window.open("http://www~03.html","blank","")
}
}

--></script>

</head>

<body bgcolor="#FFFFFF" text="#000000">
<a href="#" onClick="location_href();"><img src="01.gif" name="gazo" onLoad="setTimeout('anime()',12000)" border=0></a>
</body>
</html>

しかし、どうしても画像の順番ととリンク先の順番がずれてしまうので、画像のローテーション表示を
var Imgs=new Array(3);
var cnt=0;
Imgs[0]="02.gif";
Imgs[1]="03.gif";
Imgs[2]="01.gif";
という順番に変更したら、リンク先と画像が合うようになりました。。。

ページを読み込むときにHTMLで記述している始めの画像が重複してカウントされているのでしょうか?

説明がうまくできなくてすみません。
もし、何かコメントをいただければ幸いです。
よろしくお願いいたします。

補足日時:2004/12/07 21:51
    • good
    • 0
この回答へのお礼

助言していただいた内容を基に、本日無事に作業が完了いたしました。報告が大変遅くなりまして申し訳ありませんでした。ありがとうございました。

お礼日時:2004/12/08 20:40

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