• 締切済み

ジャバスクリプトでクリックして画像を切り替えていま

画像は一つのスライドセットに5枚ほど用意してあり、 今回、あらたにもう一セット同じページに追加したところ、相互のく動作がうまくいきません。 コードをジャバスクリプトの部分だけコピーしてみます。どこかに誤りがあったら是非ご教授ください。 <div id="nav2"> <ul class="imagelist"> <li><a class="current" href="#image1">1</a></li> <li><a href="#image2">2</a></li> <li><a href="#image3">3</a></li> <li><a href="#image4">4</a></li> <li><a href="#image5">5</a></li> <li><a href="#image6">6</a></li> </ul> </div> <div id="nav3"> <ul class="imagelist"> <li><a class="current" href="#image7">1</a></li> <li><a href="#image8">2</a></li> <li><a href="#image9">3</a></li> <li><a href="#image10">4</a></li> <li><a href="#image11">5</a></li> </ul> </div> : : : <div id="slideshow"> <img id="image1" src="/livingimg/002.jpg"alt="Image 1" /> <img id="image2" src="/livingimg/031.jpg" alt="Image 2" /> <img id="image3" src="/livingimg/6039.jpg" alt="Image 3" /> <img id="image4" src="/livingimg/6336.jpg" alt="Image 4" /> <img id="image5" src="/livingimg/5563.jpg" alt="Image 5" /> <img id="image6" src="/livingimg/5860.jpg" alt="Image 6" /> </div> <div id="slideshow"> <img id="image7" src="/interiorimg/035akari.jpg"alt="Image 7" /> <img id="image8" src="/interiorimg/034.jpg" alt="Image 8" /> <img id="image9" src="/interiorimg/5923akari.jpg" alt="Image 9" /> <img id="image10" src="/interiorimg/akari190.jpg" alt="Image 10" /> <img id="image11" src="/interiorimg/5866akari.jpg" alt="Image 11" /> </div> こんな具合です。またhead部分に <style type="text/css"> <!-- #slideshow img{ display: none; } --> </style> と書いてあります。これで回答いただくことに必要な情報は十分でしょうか もちろん一つのセットの場合は正常に動作しています。 宜しくお願いします。 補足 ちなみに url は http://brownpaper.biz/interior.htm です。

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

#1です。 >同一のページにもうワンセット記述する方法はありますか? 方法はいろいろ考えられます。 一番簡単なのは、もう一つスクリプトを作成して、そのidなどの部分だけを新しいセットに合せて書換えておく。 でも、この方法だと3セット、4セット…となる度にどんどん増えるので非効率的です。 他の方法としては、idなどによらず一般化したスクリプトで複数対応可能なものにしておいて、使用するときに対象要素のidなどを指定するようにしておく方法。 でも、ご質問のソースをよく見ると、リンク要素のhref属性が画像要素のidになるように設定しているので、結果的に全ての画像にはidがあることになり、正しくマークアップしてあればそれだけで対象要素を決定できるようになっています。 もしそれでよいのならば、slideshowなどというidは不要ですし、画像要素はどこにあっても処理上はかまわないということになります。 一方、imagelistというクラスはグルーピングと処理対象を指定するために必要なので、これだけを使用することにしてスクリプトを作成すればよいのではないでしょうか? 以下、サンプルです。 (全角空白は半角に) $(function(){  $(".imagelist").each(function(){   $("a", this).each(function(){    if(!$(this).hasClass("current")) $(this.hash).hide();   }).click(function(){    var t = $(this), p = t.parents("ul.imagelist");    if(!t.hasClass("current")){     $("a.current", p).removeClass("current").each(function(){      $(this.hash).hide();     });     t.addClass("current");     $(this.hash).fadeIn(1300);    }    return false;   });  }); }); * class="current"は元のコードと同じ使い方をしています。 * ul class="imagelist"をグループの1セットとして認識します。 * HTMLソースが整合しているかどうかはチェックしていません。 * しつこいようですが、idは文書内で一意となるように設定するようにしてください。

bluegray0628
質問者

補足

回答いただきありがとうございます。 内容が難しく私には難解でしたが、簡単な方法(スクリプトを追加する)というヒントをいただきましたのでslideshow, slideshow2というふうに記述して試してみたところ、2セット目を追加することができました。サンプルコードの方法ももう少し勉強してトライしてみたいと思います。 もう一つ疑問に思っていることがあります。 サイトのhead部分に <script type="text/javascript" src="http://www.google.com/jsapi"></script> <script type="text/javascript" >google.load("jquery","1.4");</script> <script type="text/javascript" src="/slideshow.js"></script> <script type="text/javascript" src="/slideshow2.js"></script> とあり、した2行は今回のスクリプト。 上の2行の意味がわかりません、このコーナーで過去にアドバイスをうけ記述したもので、これが無いと実際のスライドショー が動作しません。 これはどこかのサーバーに格納されているということなのでしょうか?宜しくお願いいたします。

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

>コードをジャバスクリプトの部分だけコピーしてみます どこにもスクリプトのコードは無いみたいですが…? とろあえず、ご提示のソースからわかることは、 id="slideshow"の要素が複数ありますが、文法違反なのでスクリプト作成者がそのような事態を想定していないのでは?

bluegray0628
質問者

補足

ご回答ありがとうございます。 知識不足で質問そのものが不明瞭なこと失礼しました。 もう一度整理してみたいと思います。現在 、<div id="nav2"> <ul class="imagelist"> <li><a class="current" href="#image1">1</a></li> <li><a href="#image2">2</a></li> <li><a href="#image3">3</a></li> <li><a href="#image4">4</a></li> <li><a href="#image5">5</a></li> <li><a href="#image6">6</a></li> </ul> </div> <div id="slideshow"> <img id="image1" src="/livingimg/002.jpg"alt="Image 1" /> <img id="image2" src="/livingimg/031.jpg" alt="Image 2" /> <img id="image3" src="/livingimg/6039.jpg" alt="Image 3" /> <img id="image4" src="/livingimg/6336.jpg" alt="Image 4" /> <img id="image5" src="/livingimg/5563.jpg" alt="Image 5" /> <img id="image6" src="/livingimg/5860.jpg" alt="Image 6" /> </div> というコードで数字をクリックして画像を切り替えています。 同一のページにもうワンセット記述する方法はありますか? 宜しくお願いいたします。

関連するQ&A