質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

3629閲覧

サムネール画像をクリックしてメイン画像と入れ替えると共にaltの文字列も下に表示したい

KazutoshiOhashi

総合スコア125

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2016/09/01 15:05

私は、javascriptについては、詳しくありません。
標記の内容について、以前、ネットで調べた、下記のjavascriptとhtmlを見つけ
インストールして利用させて頂いています。
今回、altの文字列の内容をメイン画像の下に写真説明文を表示し、サムネール画像をクリックするごとに、メイン画像共にaltの説明文も入れ替えたいのです。

javascript部をどのように改造したら良いのかをお教え頂きたく存じます。
宜しくお願いいたします。

javascript部

<script type="text/javascript"> $(function(){ $("img.ChangePhoto").click(function(){ var ImgSrc = $(this).attr("src"); $("img#MainPhoto").attr({src:ImgSrc}); $("img#MainPhoto").hide(); $("img#MainPhoto").fadeIn("slow"); //--> </script>

html部

<!-- メイン画像 --> <img src="1main.jpg" border="0" width="100%" alt="mainPHOTO" id="MainPhoto"> **<span>mainPHOTO</span>** <!-- サムネール画像 -->

<img src="p10.jpg" width="100%" border="0" alt="image-1" class="ChangePhoto"></li>
<img src="p11.jpg" width="100%" border="0" alt="image-2" class="ChangePhoto"></li>
<img src="p12.jpg" width="100%" border="0" alt="image-3" class="ChangePhoto"></li>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2016/09/01 18:31

コードはそれぞれコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。また、参考にした記事のURLはリンク付きで追記してください。
guest

回答2

0

ベストアンサー

提示のjavascriptソースは閉じかっこが欠けていますがその部分を抜き出したという事は、
画像の入れ替え個所はわかったということでしょうか。

$("img#MainPhoto") は idがMainPhotoのimgタグの、jQueryオブジェクトを取得しています。
jQueryはライブラリの名前です。jQueryオブジェクトを取得するとは、jQueryで扱いやすい形にするようなことです。

文字を入れ替えたいspanにもid属性を設定して同じように取得してください。
(idを指定しない場合はすべてのspanが対象になります)
タグの中のテキストを書き換えるにはjQueryオブジェクトのtextメソッド(関数)が使えます。

参考:
http://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_html_text_set

好きな文字に書き換えられるようになったら、attrで画像のsrc属性を取っている様に、alt属性を取得して、それを使って文字を書き換えてみてください。

投稿2016/09/01 15:55

flied_onion

総合スコア2604

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KazutoshiOhashi

2016/09/02 00:51

ありがとうございます。 javascriptソースかっこ閉じをコピーし忘れました。画像の入れ替えは正常に動いていました。 お教えいただいたヒントを元に下記のようにしました。 入れ替え部分のタグ<span>でも良かったのですが、スタイルシートでの定義の都合で、<P>としました。 おかげさまで、無事に目的を果たしました。 ありがとうございました。 $(function(){ $("img.ChangePhoto").click(function(){ var ImgSrc = $(this).attr("src"); var ImgAlt = $(this).attr("alt"); $("img#MainPhoto").attr({src:ImgSrc}); $("img#MainPhoto").hide(); $("img#MainPhoto").fadeIn("slow"); $("p#MainPhoto").text(ImgAlt); return false; }); });
flied_onion

2016/09/02 02:10

参考になったようでなによりです。 おまけとして、 $("p#MainPhoto").hide().text(ImgAlt).fadeIn("slow"); としてあげると、文字もフェードインしてくるようになります。 jQueryの多くのメソッド(※)は、呼び出すと自分自身を返してくるので上の例の様に連ねて呼び出すことができます(メソッドチェーンと呼ばれます)。 上の例は以下と同等の意味になります。 $("p#MainPhoto").hide(); $("p#MainPhoto").text(ImgAlt); $("p#MainPhoto").fadeIn("slow"); こちらだとjQueryは毎回 "p#MainPhoto"を検索するはずなので、パフォーマンスとしてもメソッドチェーンを使った方が良くなります。 ※ たとえば値をとってくるようなメソッドの場合は、値が返ってくる(jQueryオブジェクトが返ってこない)ので連ねることはできません。 以上、ご参考まで。
guest

0

javascript

1$(function(){ 2 $("img.ChangePhoto").click(function(){ 3 var ImgSrc = $(this).attr("src"); 4 var ImgAlt = $(this).attr("alt"); 5 with($("img#MainPhoto")){ 6 attr({src:ImgSrc}); 7 hide(); 8 fadeIn("slow"); 9 next().html(ImgAlt); 10 } 11 }); 12});

HTML

1<img src="1.jpg" id="MainPhoto"> 2<span>test</span> 3<ul> 4<li><img src="2.jpg" alt="image-1" class="ChangePhoto"></li> 5<li><img src="3.jpg" alt="image-2" class="ChangePhoto"></li> 6<li><img src="4.jpg" alt="image-3" class="ChangePhoto"></li> 7</ul>

上記で構造上はいけるはずですが、いくつか問題点があります

  • 最初に戻る(今回の例だと1.jpg)サムネイルが用意されていないけどOK?
  • 普通サムネイルは小さな画像を用意しておくので、メインに表示するのは別の大きな画像でなくてよいのでしょうか?
  • altをspanに流し込んでいますが、altはあくまでもサムネイルの代替文書なのでもっと別のコメントを書きたいのではありませんか?

感覚的には別途表示用画像やコメントを用意しておいて、参照しながら差し替えるほうがよいと思います。

投稿2016/09/02 00:53

yambejp

総合スコア114779

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問