• ベストアンサー

文法について

御願い致します。 画面Aに画像の変わるバナーが表示されているとします。 このバナーには、PGMで3枚の画像が順次表示されるように設定されており、 1枚目、2枚目、3枚目の画像を各々クリックすると、それぞれ異なる指定先ページにリンクできるようになっています。 しかし、このバナーを沢山の画面に貼り付けた時、もしも修正が発生した場合、50画面ならば、その50画面全部を修正しなくては、ならなくなります。 ※画像1、画像2、画像3の中身を、初めはA,B,Cの内容でバナーが表示されていたとすると、今度は、画像1、画像2、画像3には、A,D,Eを表示させたい(2画面の修正)という時の事であります。 (先の画像B,Cが、今度は、新規の画像D,Eにて表示されるという訳であります。) この場合、このバナー表示の部分を、何らかのコマンド(ロジック?)を使って設定しておけば、、その呼び込まれる側(画像表示がされるだけの画面)のみを修正すれば、一回の作業で 全体に波及し、修正が済むと思うのですが、こういった動作を持つ文法(此れがCGIといわれるものなのでしょうか?)をどなたかご存知ありませんか? COBOL言語で言えば、Perform(PGMの中から、他のPGMを呼びにいき、その時やらせたい処理をさせる文法)というコマンドに該当すると思います。 説明が下手で申し訳ありませんが、何卒よろしくお願いいたします。 このOkWebサイトで、学校にも行かずプログラムが組めるようになった私しです。どうぞお助け下さい、ご教授くださいませ。宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • mrumesuke
  • ベストアンサー率45% (254/557)
回答No.2

画像だけ差し替えた方が早いと私も思うのですが。。。 どうしても何らかの手法でプログラムしたいというのであれば、JavaScriptを外部ファイルとして独立させてしまいましょうか。 ----↓ここから image1=new Image(); ~ win=window.open(wurl,"wname"); } ---↑ここまで この部分を適当な名前を付けてファイルに保存します。 (仮に ./js/banner.js としておきます) HTML側では <SCRIPT LANGUAGE="JavaScript"> <!-- ~ //--> </script> の部分を削除し、代わりに先ほど作成した外部JavaScriptを呼びだします。 <script type="text/javascript" src="./js/banner.js"></script> 画像のファイル名やリンク先に変更が生じた場合は、banner.jsを修正するだけで、banner.jsを利用する全てのページに修正が反映されます。

参考URL:
http://allabout.co.jp/computer/javascript/closeup/CU20030521/
wowwow2003
質問者

お礼

ご教授有難う御座いました。 ものの見事に希望するPGMが完成しました!!! 本当に有難う御座いました。 永い事あちらこちらを探して探して、それでもなくて、しかし、今回やっと解決しました。 感謝感激であります。 また次回何か(いえ、必ず発生するでしょう)文法で判らないことがあった場合は、是非、お知恵をお貸し下さい。 本当に有難う御座いました。

その他の回答 (2)

  • hitomura
  • ベストアンサー率48% (325/664)
回答No.3

画像ファイル名の文字列およびリンク先の文字列をArrayを使ってまとめてみてはどうでしょうか? SCRIPT部分を抜き出して書き換えてみるとこうなります。 <SCRIPT LANGUAGE="JavaScript"> <!-- var imageArray = new Array(); var hrefArray = new Array(); var currentTarget = 0;// 現在表示中の画像&リンク先 imageArray[0] = "navis_02.gif"; hrefArray[0] = "a.html"; imageArray[1] = "navis_03.gif"; hrefArray[1] = "b.html"; imageArray[2] = "navis_04.gif"; hrefArray[2] = "c.html"; function imgchange(){ clearTimeout(timerID); nCurrentValue++; if ( nCurrentValue >= imageArray.length ) nCurrentValue = 0; document.fm.anime.src=imageArray[nCurrentValue]; timerID=setTimeout("imgchange()",1000); } //リンク先を変更 function mnuopen() { win=window.open(hrefArray[nCurrentValue],"wname"); } //--> </script> Arrayの使い方については参考URLを参照願います。

参考URL:
http://member.nifty.ne.jp/aya/js2/js205.htm
wowwow2003
質問者

お礼

ご教授有難う御座いました。 #2の方のアドバイスも踏まえ、やっと見事に希望するPGMが完成しました!!! 本当に有難う御座いました。 小生には、Arrayの文法が、少々難しいのですが(年です・・・・)、それでも、希望する画面が完成できたことは、皆さんのお力によるところが「大」であります。 永い事あちらこちらを探して探して、それでもなくて、しかし、今回やっと解決しました。 また次回何か(いえ、必ず発生するでしょう)文法で判らないことがあった場合は、是非、お知恵をお貸し下さい。 本当に有難う御座いました。感謝の気持で一杯であります。

  • suii
  • ベストアンサー率45% (29/64)
回答No.1

最初に見当違いかもしれません、という事で、ごめんなさい。 50箇所の画像1、画像2、画像3 のリンク先はファイル A,B,C のままとして、 D,E を B,C にリネームしてupしてしまえば、50カ所から飛んでくるリンクは D,E を表示するのでは、というお話ではなく?

wowwow2003
質問者

お礼

お忙しいところ、ご投稿いただき有難う御座いました。 後出の方々のお力で、希望するPGMが完成しました。 また何か文法で判らないことがあった場合、お手すきでしたら是非、お知恵をお貸し下さい。 ご投稿有難う御座いました。

wowwow2003
質問者

補足

実は、下記のようなPGMは理解できているので、この各画像にリンク先を指定させる方法はわかったのです。 -------- <HTML> <HEAD> <TITLE>無題ドキュメント</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- image1=new Image(); image1.src="navis_02.gif"; image2=new Image(); image2.src="navis_03.gif"; image3=new Image(); image3.src="navis_04.gif"; function imgchange(){ clearTimeout(timerID); if(document.fm.anime.src==image1.src) document.fm.anime.src=image2.src; else if(document.fm.anime.src==image2.src) document.fm.anime.src=image3.src; else document.fm.anime.src=image1.src; timerID=setTimeout("imgchange()",1000); } //リンク先を変更 function mnuopen() { //リンク先退避用 var wurl; //バナーの画像パスで リンク先判定 if(document.fm.anime.src==image1.src) wurl="a.html"; else if(document.fm.anime.src==image2.src) wurl="b.html"; else wurl="c.html"; win=window.open(wurl,"wname"); } //--> </script> </HEAD> <body onLoad="timerID=setTimeout('imgchange()',1000)"> <form name="fm"> <A HREF="javascript:mnuopen()"><img src="navis_02.gif" name="anime" alt=" アニメ"></A> </FORM> </body> </HTML> このことから、ある画面の中から、このPGMを呼びにいくと表現するのか・・・・・・決してリンクさせるという意味ではなく、その呼びにいく先のPGMのみ修正してしまえば、対象の設置先画面をいじる必要は無いのではと思ったのです。