![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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です。
宜しくお願いします。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_02.png?8acaa2e)
No.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を追加しました。
横から失礼しました。 参考まで…
お礼が大変遅くなりまして、本当に申し訳ありません。アドバイス、ありがとうございました。おかげさまで、希望どおりの動きを作ることができました。ソースの説明もとても解りやすく書いていただいて、助かりました。
No.1
- 回答日時:
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で記述している始めの画像が重複してカウントされているのでしょうか?
説明がうまくできなくてすみません。
もし、何かコメントをいただければ幸いです。
よろしくお願いいたします。
助言していただいた内容を基に、本日無事に作業が完了いたしました。報告が大変遅くなりまして申し訳ありませんでした。ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
リンク先がそれぞれ別の画像の...
-
中心を軸にくるくる回るjQuery ...
-
画像がプルプルふるえるんです。
-
右クリック禁止スクリプト挿入法
-
画像でチェックボックスを表示...
-
2種類できますか?
-
javascriptで毎月替わる画像
-
textareaに画像を表示したい
-
ロールオーバーで切り替えられ...
-
バナー広告のように表示させた...
-
ボタンをクリックした時に、キ...
-
画像の重なりの順序を代える方...
-
新規ウインドウ+submit
-
アクセス毎に画像が変わる
-
代替文字が表示されなくなった...
-
JavaScriptでの画像切替について。
-
bxsliderにて読み込み後に内容...
-
MAX関数を使ってからLEFT JOIN...
-
【iOS及びAndroid】リンク画像...
-
連番画像「次へ」「前へ」で、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
textareaに画像を表示したい
-
Javascriptで指定した日付と時...
-
javascriptで毎月替わる画像
-
画像をフォルダに入れれば表示...
-
画像の重なりの順序を代える方...
-
スワップイメージが上手く動作...
-
JavaScriptとチェックボックス...
-
透過pngの透明部分以外をクリッ...
-
Gifアニメ、最後のコマに行った...
-
bxsliderにて読み込み後に内容...
-
Javascript で共通の処理をどこ...
-
各フォルダから1枚ずつ画像をラ...
-
1枚の画像をクリックして複数の...
-
画像を切り替えランダム表示
-
画像削除機能を付けたい
-
マウス追従スクリプトについて
-
画像ランダム表示、しかしダブ...
-
1枚の画像をクリックすると複数...
-
<table>、もしくは<iframe>内で...
-
jQuery FlexSliderのカルーセ...
おすすめ情報