• 締切済み

JavaScriptで画像からリンクプラスアルファ

http://www.printpac.co.jp/ こちらのページの 2段目のスライドしているナビゲーションのようにマウスオ-バーでnext,prevボタンが表示され、それをクリックすると次の画像が即座に表示され、なおかつ目的の画像からは個別のページへリンクする。というものが作りたいと思っています。 今現在はフェードインフェードアウト(画像表示の雰囲気がサンプルとは少し異なります)で画像を7枚順に表示されるようにするところまではOKです。 更に、最後の画像の(giifファイル)中の文字からクリックでリンクに飛ぶ。 そして、3秒周期の表示が待てない人にはnext,prevの矢印がマウスオーバーで出てきて、それをクリックすると次の画像がフェードインする。という風にしたいと思っています。 現在のコードです。 <script src="http://code.jquery.com/jquery.js"></script> <script language="JavaScript"><!-- $(function(){ myImageCnt = 7; // 画像の数 myImage = new Array( // 画像ファイル名の設定 "img/main/f01.jpg", "img/main/f02.jpg", "img/main/f03.jpg", "img/main/f04.jpg", "img/main/f05.jpg", "img/main/f06.jpg", "img/main/f07.jpg" ); myNowCnt = 0; // 現在表示している画像番号 function myChange(){ // 定期的に画像を更新する関数 if (myNowCnt == myImageCnt-1){ // 最後の画像まで表示したのなら myNowCnt=0; // 最初の画像に戻す }else{ // 最後の画像まで表示していないのなら myNowCnt++; // 次の画像へ } setTimeout(function() { $("#myFormImg").fadeOut(2000, function() { $(this).attr("src", myImage[myNowCnt]); $(this).fadeIn(1000, function() { myChange(); }); }); }, 3000); // 3秒周期 } myChange(); }); // --></script> <img src="img/main/f01.jpg" width="900" height="300" id="myFormImg"> <script language="JavaScript"><!-- myChange(); // --></script> サンプルのページでは"CSS"と"画像にMap"作ってリンク飛ばして、スライダーの動きはjsファイルで 制御しているようでしたのでこの"Map"を参考にひとまず最後に来るはずの画像を最初に持ってきて画像ファイルにMap作ってリンク飛ばして対応してるのですが、かなり苦し紛れ状態です・・・ 何をどのように記述すれば目的の物が出来るでしょうか? よろしくお願いいたします。

みんなの回答

回答No.2

解答が遅くなりました。 私はjQueryを使わないのでそれを活用した方法は分かりません。ライブラリを使わないコードを簡単に示しておきます。 > 1.画像にonClickイベントを指定して座標を取得 > 2.それが文字の位置なら移動させる <script type="text/javascript"> function click(){ var x=event.offsetX;//クリックX座標 var y=event.offsetY;//Y座標 if(画像の左端<=x&&画像の右端>=x&&画像の上端<=y&&画像の下端>=y){//クリックしたのが文字の位置か判定 //画像移動処理 } } </script> <img id="myFormImg" onclick="click()" src="src.jpg" /> > 1.onClickイベントを指定したnext,prev画像などをHTML内に用意しておく。そのonClickに画像フェードイン処理を記述 > 2.表示する画像などにonMouseOverイベントを指定する。そこでnext,prevを表示 > 3.onMouseLeaveイベントでnext,prevを非表示 <script type="text/javascript"> function click(){ //画像移動処理 } function over(){ document.getElementById("next").style.visibility="visible";//next画像表示 } function leave(){ document.getElementById("next").style.visibility="hidden";//next画像非表示 } </script> <img id="next" onclick="click()" src="next.jpg" style="visibility:hidden;" /><!--next,prev画像--> <img id="myFormImg" onmouseover="over()" onmouseleave="leave()" src="img.jpg" /> >当該の画像を表示した時にMAP要素を表示、それ以外では非表示にするなんて方法もあるかと思います。 これはたとえばmap要素(idをmapと仮定して)を用意した上で、myChange()の中で if (myNowCnt == myImageCnt-1){ // 最後の画像まで表示したのなら document.getElementById("myFormImg").useMap="#map";//mapを設定 myNowCnt=0; // 最初の画像に戻す }else{ // 最後の画像まで表示していないのなら myNowCnt++; // 次の画像へ document.getElementById("myFormImg").useMap="";//mapを削除 } とします。

回答No.1

>最後の画像の(giifファイル)中の文字からクリックでリンクに飛ぶ。 これをMAP要素を使わないでするとすれば、 1.画像にonClickイベントを指定して座標を取得 2.それが文字の位置なら移動させる という処理にでもなるでしょうか。 >3秒周期の表示が待てない人にはnext,prevの矢印がマウスオーバーで出てきて、それをクリックすると次の画像がフェードインする これには、 1.onClickイベントを指定したnext,prev画像などをHTML内に用意しておく。そのonClickに画像フェードイン処理を記述 2.表示する画像などにonMouseOverイベントを指定する。そこでnext,prevを表示 3.onMouseLeaveイベントでnext,prevを非表示 とでもなるでしょう。 next,prevはonMouseOverやonLoad内で作っても構いません。 >最後に来るはずの画像を最初に持ってきて画像ファイルにMap作ってリンク飛ばして これに関しては、当該の画像を表示した時にMAP要素を表示、それ以外では非表示にするなんて方法もあるかと思います。

youdesign
質問者

補足

ありがとうございます でも、コードが分からないのでどう記述していいのかがさっぱり分からないのです。。。 例えば、1、「onClickイベントを指定したnext,prev画像」とは・・・??? コードを出来れば教えていただけませんでしょうか。 あちこち調べてますがなかなか進まず・・・ Ajaxというものを使えばできるのかなぁと漠然と思ったりもするのですが・・・ そうなると又一からなので、jQeryの方がいいかもしれません。 実は、Flashで今までやっていたのですが、今後使えなくなるようなので、HTML5だったり、jQeryだったりに、シフトしていかなければいけないかなぁと思っているところです。 すみません、質問の仕方が悪かったでしょうか。 どうぞよろしくお願いいたします。

関連するQ&A

  • javascriptで画像をテーブルに出力する方法

    javascriptで定期的に入れ替えている画像をテーブルに出力(表示)する方法を教えてください。 <html> <head> <script language="JavaScript"><!-- myImageCnt = 4; myImage = new Array( "img0.jpg", "img1.jpg", "img2.jpg", "img3.jpg" ); myNowCnt = 0; function myChange(){ if (myNowCnt == myImageCnt-1){ myNowCnt=0; }else{ myNowCnt++; } document.myFormImg.src = myImage[myNowCnt]; setTimeout( "myChange()" ,5000 ); } // --></script> <img src="img0.jpg" width="200" height="200" name="myFormImg" /> <script language="JavaScript"><!-- myChange(); // --></script> </head> </html>

  • 画像を順にフェードインフェードアウトで表示

    HPのTopページのw900×h300位のスペースに 順に画像をフェードインフェードアウトしながら表示させ,最後の画像でストップさせたい Flashムービーを作成するのは簡単なのですが、iPadに対応しない為 jQueryなどで表示させたいのですが、javaが全然わからず困っています。 一応下記のように自分で調べてみて見つけた、近いものを作っては見たものの <script language="JavaScript"><!-- myImageCnt = 7; // 画像の数 myImage = new Array( // 画像ファイル名の設定 "img/main/f01.jpg", "img/main/f02.jpg", "img/main/f03.jpg", "img/main/f04.jpg", "img/main/f05.jpg", "img/main/f06.jpg", "img/main/f07.jpg" ); myNowCnt = 0; // 現在表示している画像番号 function myChange(){ // 定期的に画像を更新する関数 if (myNowCnt == myImageCnt-1){ // 最後の画像まで表示したのなら myNowCnt=0; // 最初の画像に戻す }else{ // 最後の画像まで表示していないのなら myNowCnt++; // 次の画像へ } document.myFormImg.src = myImage[myNowCnt]; // 次の画像を表示する setTimeout( "myChange()" , 6000 ); // 2秒周期に画像を更新する } // --></script> <img src="img/main/f01.jpg" width="900" height="300" name="myFormImg"> <script language="JavaScript"><!-- myChange(); // --></script> こんな感じでやってみたもののこれではフェードインフェードアウトにはなりません どこに何を足せばいいのか、または全く違うコードを書けばいいのかどなたかお教えいただけませんでしょうか。 jQueryだと記述はもっと簡単なのでしょうか?

  • javascriptで画像をランダム表示させたい

    javascriptで画像をランダム表示させたいと思い、下記ソースを記述しました。 下記ソースでは、画像をランダムに1枚ずつ表示するようになっています。 今回、1枚ずつではなく、50枚ある画像を10枚ずつランダムに表示させたいと思っています。下記ソースから修整するにはどのような考え方になるのか教えていただけませんか? 単純に、 "img/1.jpg", の部分を "img/1.jpg,img/2.jpg,img/3.jpg,img/4.jpg,img/5.jpg", としてみたのですが違うみたいですし、、。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>20110720test</title> </head> <body> <script language="JavaScript"><!-- myImageCnt = 5; myImage = new Array( "img/1.jpg", "img/2.jpg", "img/3.jpg", "img/4.jpg", "img/5.jpg" ) myRnd = Math.floor(Math.random()*myImageCnt); document.write("<img src='",myImage[myRnd],"' border='0' >"); // --></script> </body> </html>

  • ページ更新の度に変わる画像を上部と下部の中央に表示させるには?

    アフィリエイトをやっておりまして、ページを表示するたびにバナーが変わるようにしたいと思っております。Googleで検索しましたところ下のようなJavaScriptを使うことが分かりました。ですがこれは<head>と</head>の間に書かなければなりませんよね?これをページ上部中央と、また下部中央に表示させたいのですが、何を加えればよろしいのでしょうか。また、各画像にリンクをつけるにはどのようにすればよろしいのでしょうか。よろしくおねがいします。 <SCRIPT LANGUAGE = "JavaScript"> myImageCnt = 15; myImage = new Array( "01.jpg", (途中省略) "15.jpg"); myRnd = Math.floor(Math.random()*myImageCnt); document.write("<img src='",myImage[myRnd],"' border='0' >"); </SCRIPT>

  • 画像クリックでウインドウを閉じたいのですが・・・

    こんにちは。JavaScriptはwebサイトから頂いて コピーして使うだけの理解力です。どうぞよろしくお願いします。 フォトアルバムを作っていまして、画像をクリックするごとに 画像が入れ替わるところまではできたのですが、 それですと延々と続いてしまいますので、最後の画像で小窓ごと 閉じてしまいたいのですが、どのようなタグになりますでしょうか? HEADに <SCRIPT LANGUAGE="JavaScript"> <!--// img = new Array("http://www5b.biglobe.ne.jp/○○.jpg","http://www5b.biglobe.ne.jp/○○2.jpg","http://www5b.biglobe.ne.jp/○○3.jpg"); i=0; function myChange(){ i++; i %=img.length; document.my_imgchange.src = img[i]; } // --> </SCRIPT> bodyに <a href="JavaScript:myChange()"><img src="http://www5b.biglobe.ne.jp/○○.jpg" border="0" name="my_imgchange"> と入れています。 例えば3枚目の画像をクリックした時に、また1枚目の画像に戻るのではなくて、 小窓ごと閉じてしまうにはどのようなタグをどこへ埋め込めばよろしいでしょうか? 色々試してみましたがうまくいきませんでした。 どなたか力をお貸しください。どうぞよろしくお願い致します。

  • JavaScriptで画像を変更する

    質問が分かりずらいと思いますが、お願いします。 <body>内に↓が書かれています。 <script language="JavaScript"> <!-- function ChangePics() { for(i = 0; i < 3; i++) document.images[i].src = "white.jpg"; } // --> </script> <img src="black.jpg"><br> <img src="black.jpg"><br> <img src="black.jpg"><br> <form> <input type="button" value="画像一括変更" onclick="ChangePics()"></input> </form> ------------------------------------------------------------ [画像一括変更]ボタンをクリックすると表示されていた3枚の「black.jpg」が「white.jpg」に切り替わります。 ですが、画像のsrcへのアクセスは「document.images[i].src」で 行っているため、 <img src="black.jpg"><br> <img src="black.jpg"><br> <img src="black.jpg"><br> の上に他の画像がある場合はその画像が「white.jpg」に変更されてしまいます。 ですが、<img src="black.jpg" name = "pic1">のようにname属性を付けるのは処理が面倒になるので、避けたいです。 質問の意図は、「作ったJavaScriptのプログラムをブログに載せたいが、そのプログラムの上にほかの画像があるため、正常に動作しない。」ということです。

  • javascriptによる画像切り替えについて2

    javascriptによる画像切り替えについて2 先日に引き続きjavascriptによる画像切り替えについての質問です。 http://okwave.jp/qa/q5622789.html 添付画像のように、サイドバーにボタン数個、大きな画像(#main_img)とあって、ボタンにオンマウスで#main_imgが切り替わり、ボタンをクリックするとリンク先に移動できるようにしたいと考えました。 fujillinさんのアドバイスと http://www.ziyotoy.net/lab/multi_rollover/# を参考に以下のようなソースである程度やりたかったことができたのですが、若干の変更をしたいものの初心者のためどうすればよいかわかりません。 ご助言いただけないでしょうか? 現行のソース ◆外部js http://www.ziyotoy.net/lab/multi_rollover/# に掲載されています(長くてこのスペースに書ききれないので…) ◆header内js <script type="text/javascript"> //切り替え対象を指定(id) var mr = new MultiRollover("main_img"); //ロールオーバー対象を指定(id) mr.addTarget("navi"); //切り替え画像を指定(画像へのパス) mr.addSource("./img/main_img_02.jpg", "./img/main_img_03.jpg", "./img/main_img_04.jpg", "./img/main_img_05.jpg", "./img/main_img_06.jpg"); mr.observe(window, "load", mr, mr.create); </script> ◆html <img src="img/main_img_01.jpg" alt="メインイメージ" id="main_img" /> <ul id="navi"> <li><a href="../aboutus/index.html" id="thumb2"><img src="../img/menu_02.jpg" alt="ボタン1" /></a></li> <li><a href="../aboutus/index.html#where" id="thumb3"><img src="../img/menu_03.jpg" alt="ボタン2" /></a></li> <li><a href="../staff/index.html" id="thumb4"><img src="../img/menu_04.jpg" alt="ボタン3" /></a></li> <li><a href="../menu/index.html" id="thumb5"><img src="../img/menu_05.jpg" alt="ボタン4" /></a></li> <li><a href="../event/index.html" id="thumb6"><img src="../img/menu_06.jpg" alt="ボタン5" /></a></li> </ul> この状態でボタンにロールオーバーでid="main_img"の画像を切り替えることができるようになりましたが、ロールアウトしたときに最初のmain_img_01.jpgに戻したいのにmain_img_02.jpgになってしまいます。 ロールアウトしたらmain_img_01.jpgに戻るようにするにはどこを変更したらよいのでしょうか? http://www.ziyotoy.net/lab/multi_rollover/# の管理者様に質問できればと思ったのですが、ブログのコメント等も受け付けていらっしゃらないようなので、ここで質問させていただきます。 どなたかご助言をお願いいたします。

  • javascriptを使って画像を切り替える

    javascriptを使って画像(id="chengeImg")を切り替えたいと思っています。 画像はsamp0.jpg~samp4.jpgの計5枚 ただ、問題があって、 画像によって移り替わる時間を変えたいんです。(一定ではない) setTimeoutの引数(time)と画像を、どう結びつければよいのかが 分からず困っています。 それぞれ、 画像0の時は5000ミリ秒  画像1の時は4000ミリ秒 画像2の時は3000ミリ秒 … と移り変わる速度を変えたいのです。 一応、timeは配列がいいのかと配列にしてみました それが良いのかどうかも定かではないのですが… どのようにすれば、時間が一定でない画像切り替えが可能になるでしょうか? スクリプトを詳しく教えていただけると、ありがたいです。 以下、javascriptの一部を記します。 【js】ファイル(imagechange.js)------ window.onload=anime; var img=new Array(5); img[0]=new Image(); img[1]=new Image(); img[2]=new Image(); img[3]=new Image(); img[4]=new Image(); img[0].src="samp0.jpg"; img[1].src="samp1.jpg"; img[2].src="samp2.jpg"; img[3].src="samp3.jpg"; img[4].src="samp4.jpg"; //画像枚数 var num=0; //時間制御 time = new Array(5000, 4000, 3000, 3000, 3000); function anime(){  var ch = document.getElementById("changeImg");  ch.src=img[num].src;   if(num<4){     num++;   }else{    num=0;   }   setTimeout("anime()",time); } 【html】ファイル-------- <head> <title>画像切り替え</title> <script type="text/javascript" src="imagechange.js"</script> </head> <body> <p><img src="samp0.jpg" width="700" height="200" id="chengeImg"></p> </body> </html> 以上となります。 詳しい方、ぜひ教えてくださいませ。 どうぞ宜しくお願いいたします。

  • ボタンを押すたびに画像を切り替えるには?

    まずソースを載せます↓ <html> <head> <meta http-equiv="Content-Script-Type" content="text/javascript"> <meta http-equiv="Content-type" content="text/html; charset=shift-jis"> <title>ボタンを押すたびに画像を表示します</title> <body bgcolor="#FFFFFF"> <script type="text/javascript"> function func1(str) { document.write('<img src="c:/MyImage/dog1.jpg" width="104" height="91" />'); } function func2(str) { document.write('<img src="c:/MyImage/dog2.jpg" width="104" height="91" />'); } function func3(str) { document.write('<img src="c:/MyImage/dog3.jpg" width="104" height="91" />'); } function func4(str) { document.write('<img src="c:/MyImage/dog4.jpg" width="104" height="91" />'); } </script> </head> <body bgcolor="#FFFFFF"> <form id="myForm" name="myForm"><p> <input type="button" value="ボタン1" name="button1"onclick="func1('dog1.jpg');"> <input type="button" value="ボタン2" name="button2"onclick="func2('dog2.jpg');"> <input type="button" value="ボタン3" name="button3"onclick="func3('dog3.jpg');"> <input type="button" value="ボタン4" name="button4"onclick="func4('dog4.jpg');"> </p></form> </body> </html> 今回の質問内容はボタンを押すたびに画像を表示するjavascriptプログラムです 画像はCドライブ直下のMyImageフォルダにdog1.jpg,,dog2.jpg,dog3.jpg, dog4.jpgを入れています なんで動かないのがわからないです 回答できたらよろしくお願いします

  • ・JAVASCRIPTを使って、ホームページを作成しています。

    ・JAVASCRIPTを使って、ホームページを作成しています。 ・ JAVAを使って、ホームページを作成しています。 ・メニューのボタンに、マウスオーバーでボタンの画像を切り替える <!-- loadImage = new Image(); loadImage.src = "profile.gif"; // --> ・と同時に任意の画像を切り替える // ポイント時の処理 function On(name) { if (document.images) { document.images['def'].src = eval(name + '.src'); } } // 放した時の処理 function Off() { if (document.images) { document.images['def'].src = img0.src; } } // --> ・というscriptを同時に使いたいのですが、どちらかだけになってしまったり、どちらも作動しません。 ・一つのボタンに2つのJAVAを使う場合何か特別な入力が必要なのでしょうか? ・それとも、ただ単純にボタンのタグが誤っているのでしょうか? ・どなたかご教授お願い致します。 ・ちなみにタグを全て載せると、 <SCRIPT Language="JavaScript"> <!-- loadImage = new Image(); loadImage.src = "bbs.gif"; // --> </SCRIPT> <script type="text/javascript"> <!-- if (document.images) { // 設定開始(使用する画像を設定してください) // 通常の画像 var img0 = new Image(); img0.src = "topic4.jpg"; // ポイント時の画像1 var img1 = new Image(); img1.src = "topic4.jpg"; // 設定終了 } // ポイント時の処理 function On(name) { if (document.images) { document.images['def'].src = eval(name + '.src'); } } // 放した時の処理 function Off() { if (document.images) { document.images['def'].src = img0.src; } } // --> </script> とボタンのタグが、 <A HREF="../usatop.html"onMouseOver="On('img2')" "if(document.images) "myImage.src='bbs2.gif'" "onMouseOut="Off()""if(document.images) "myImage.src='bbs.gif'"><IMG SRC="bbs.gif" BORDER="0" name="myImage"></A> ・となっております。 ・よろしくお願いします!