タブを実装
JSのページを作りました
http://www.x-shenwu.net/~home_page/js/
//--------------------------------------------------------------------// // 前処理 //--------------------------------------------------------------------// var i; // ********************************************// // <ul><li></li><li></li>...</ul> を描画 // ********************************************// document.body.innerHTML = "" document.body.innerHTML += "<ul>" for(i=0; i<5; i++){ document.body.innerHTML += "<li>Page_" + i + "</a></li>"; } document.body.innerHTML += "</ul>" // ********************************************// // <div></div>....<div></div>を描画 // ********************************************// for(i=0; i<5; i++){ document.body.innerHTML += "<div>" + i + "あいうえお" + i + "</div>"; } //--------------------------------------------------------------------// // tabオブジェクト //--------------------------------------------------------------------// var tab = { // ===================================================== // // メンバー // ===================================================== // tabs : document.getElementsByTagName('li'), pages : document.getElementsByTagName('div'), // ===================================================== // // 何番目の li がクリックされたか返す関数 // ===================================================== // selected_num : function(obj){ var i; for( i=0; i<this.tabs.length; i++){ if( this.tabs[i] === obj ){ break; } } return i; }, // ===================================================== // // selected_numの番号にもとづいて、表示するdivを決める // ===================================================== // show_page : function(num){ var i; for( i=0; i<this.tabs.length; i++){ if( i == num ){ this.pages[i].style.display = 'block'; } else{ this.pages[i].style.display = 'none'; } } }, // ===================================================== // // 0番目のdiv以外styleを'none'にする // すべてのliをクリック可能にする(タブ化する) // ===================================================== // do : function(){ var i; for( i=0; i<this.tabs.length; i++){ this.pages[i].style.display = 'none'; this.tabs[i].onclick = function(){ var num = tab.selected_num(this); tab.show_page( num ); }; } this.pages[0].style.display = 'block'; } }; //--------------------------------------------------------------------// // タブ化 実行 //--------------------------------------------------------------------// tab.do();
liがonclickされると、tabオブジェクトが呼び出されて、tabオブジェクトが頑張るイメージ。
liは単にtabオブジェクトを呼び出すに過ぎない。
li自身にタブ切り替えメソッドを持たしたほうがよいのかなーと昔考えてたんだけど、
このようにtabオブジェクトに任せるのがよいかも。