どうやら投稿に失敗したようなので、
再度投稿いたします。
※二重投稿になっていたらすみません。
こんにちは。
私は今jsだけでタブメニューを作る勉強をしています。
動画サイトで習ったやりかたはdata-id(dataset)を使うやり方
なのですが、これではhtml5以外では使えなくなってしまうらしいと
聞きました。
そこで下記のURLを見て成り立ちを勉強しているのですが、
知識不足と経験不足で読み解くことができていません。
わからないところを列挙しますので、
どなたか親切な方、解説していただけないでしょうか・・・。
一応自分でわかるところまでは解析しています。
参考URL
http://gihyo.jp/dev/serial/01/crossbrowser-javascript/0021
質問1
var id = link.hash.slice(1);の部分
hashというのはlink(aタグ)の#がついている部分を抜き出せということですか?
また、sliceは取り出したidの配列の0番目から1番目までを取り出すという意味で
あっていますか?
質問2
function tab_init() の中の page.style.display = 'none';のぶぶん
このタイミングでpageクリアランスをかけてしまったら
なにもボタンをおさなくても最初からすべてのdivが表示されなく
なってしまいませんか?
html
1<div class="js-tabs"> 2 <ul id="tab_menu1" class="tab_menu"> 3 <li><a href="#page1-1">Page 1</a></li> 4 <li><a href="#page1-2">Page 2</a></li> 5 <li><a href="#page1-3">Page 3</a></li> 6 </ul> 7 <div id="tab_content1" class="tab_content"> 8 <div id="page1-1" class="page"> 9 Page 1 10 </div> 11 <div id="page1-2" class="page"> 12 Page 2 13 </div> 14 <div id="page1-3" class="page"> 15 Page 3 16 </div> 17 </div> 18</div>
css
1.js-tabs ul.tab_menu{ 2 list-style-type:none; 3 margin:0px; 4 padding:0px; 5} 6.js-tabs ul.tab_menu li{ 7 display:inline; 8 background:#666; 9 margin:0px; 10 padding:2px; 11} 12.js-tabs .tab_menu li a{ 13 padding:3px; 14} 15.js-tabs .tab_menu li a:link, 16.js-tabs .tab_menu li a:visited{ 17 background-color:#666; 18 color:#fff; 19} 20.js-tabs .tab_menu li a.active:link, 21.js-tabs .tab_menu li a.active:visited{ 22 background-color:#444; 23 color:#fff; 24} 25.js-tabs .tab_menu li a:hover{ 26 background-color:#333; 27 color:#f0f; 28} 29.tab_content{ 30 position:relative; 31 height:200px; 32} 33.tab_content div.page{ 34 width:450px; 35 height:200px; 36 position:absolute; 37 color:#222; 38} 39#page1-1{ 40 background-color:#ffa; 41} 42#page1-2{ 43 background-color:#faf; 44} 45#page1-3{ 46 background-color:#aff; 47}
js
1(function(){ 2var menu = document.getElementById('tab_menu1'); 3var content = document.getElementById('tab_content1'); 4var menus = menu.getElementsByTagName('a'); 5var current; // 現在の状態を保持する変数 6for (var i = 0, l = menus.length;i < l; i++){ 7 tab_init(menus[i], i); 8} 9function tab_init(link, index){ 10 var id = link.hash.slice(1); 11 var page = document.getElementById(id); 12 if (!current){ // 状態の初期化 13 current = {page:page, menu:link}; 14 page.style.display = 'block'; 15 link.className = 'active'; 16 } else { 17 page.style.display = 'none'; 18 } 19 link.onclick = function(){ 20 current.page.style.display = 'none'; 21 current.menu.className = ''; 22 page.style.display = 'block'; 23 link.className = 'active'; 24 current.page = page; 25 current.menu = link; 26 return false; 27 }; 28} 29})();
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。