• ベストアンサー

ページ内にタブを設置

ヤフー天気情報ページの[天気予報] [パーソナル天気]のタブやこちらのサイトの https://www.taikobo.co.jp/ 「欲しい商品を選ぶ」のタブの様にページが遷移しないでページ内でタブで内容が入れ替わるページを作りたいのですが、アクティブになるべきタブの画像が切り替わらないのと、最初に全ての内容部分が見えてしまってます。 http://kjs.qee.jp/ どなたかご伝授お願いいたします。 また、この作り方では問題があるようならばそれも合わせて教えていただけると幸いです。 よろしくお願いします。

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

  • ベストアンサー
  • think49
  • ベストアンサー率59% (285/482)
回答No.5

#2,3,4です。 > お作りいただきましたサンプルの<script>部分をコピーして使用してもよろしいのでしょうか? 構いませんが、コピーしたコードを使用して不具合があっても責任は持てません。 勿論、私の方でもテストしています。 が、あくまでサンプルですから、何かあっても対応できるぐらいには理解しておいた方が良いかと思います。 (本当はアドバイスを参考に自分で作るのが一番いいとは思うのですけどね…。) > またその際、開いたときにデフォルトでtab1が開いているようにならなくなってしまいますが、どのように対処したらよろしいでしょうか。 #3でも触れましたが、目的の要素に className += ' on'; を付与します。 呼出元はonclickイベントにあるので、そこから紐づけて読むとわかるんじゃないでしょうか。

Norins
質問者

お礼

お礼が遅れてすいません。 細かく説明いただきまして感謝しております。 無事に起動することができました。 ありがとうございました。

その他の回答 (4)

  • think49
  • ベストアンサー率59% (285/482)
回答No.4

#2,3です。 下記URLにサンプルをUPしました。 http://vird2002.s8.xrea.com/test/test_js/tab.html

Norins
質問者

補足

ご返答ありがとうございます。 お作りいただきましたサンプルの<script>部分をコピーして使用してもよろしいのでしょうか? うまく機能することになりまして感謝しております。 またその際、開いたときにデフォルトでtab1が開いているようにならなくなってしまいますが、どのように対処したらよろしいでしょうか。 何度もお聞きして申し訳ありませんが、教えていただけませんでしょうか。よろしくお願いします。

  • think49
  • ベストアンサー率59% (285/482)
回答No.3

#2です。 > document.getElementById(tabname).className = 'on'; // アクティブに すみません、これは意図通りに動きませんね。 1. 開いたタブを class="on" にする tab1を開くなら、class="tab1" の parentNode.className += ' on' getElementsByClassName でぐぐると、classNameで要素リストを取得する方法が見つかるのでそれを参考にしてみて下さい。 2. 非アクティブなタブを class="" にする document.getElementById(tabname).className=''; で id="gaiyo" 等、3つのIDを指定してclassNameを消去してください。 こんな感じで出来ると思います。

  • think49
  • ベストアンサー率59% (285/482)
回答No.2

#1の回答に加えて、 > アクティブになるべきタブの画像が切り替わらないのと、 document.getElementById(tabname).className = 'on'; // アクティブに 非アクティブなタブは className=NULL; にする。

Norins
質問者

補足

ありがとうございます。  教えていただいた通り「document.getElementById(tabname).className = 'on';」を<script type="text/javascript"></script>内に記載しました。 >非アクティブなタブは className=NULL; にする。 とはどの様にすればよろしいのでしょうか。 お手数ですがお願いします。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

scriptタグの中でこういう記載をしておく window.onload=function(){ChangeTab('tab1');} もしくは、tab2,tab3のタグにあらかじめスタイルシートで display:noneを指定しておく。 のどちらかで実現できます。

Norins
質問者

お礼

ありがとうございます。 正確に表示できました。

関連するQ&A