タブでコンテンツを切り替える

タブをクリックしたときにページを遷移せずCSSのdisplayプロパティをblockまたはnoneに設定することによりコンテンツの切り替えを行う。

<div id="tabToggle">
<ul id="tab">
    <li class="selected"><a href="#chapter1">Chapter1</a>
    </li>
    <li><a href="#chapter2">Chapter2</a>
    </li>
    <li><a href="#chapter3">Chapter3</a>
    </li>
    <li><a href="#chapter4">Chapter4</a>
    </li>
</ul>
<div id="tabContents">
    <div id="chapter1">
        <h3>あああ</h3>
    </div>
    <div id="chapter2">
        <h3>いいいt</h3>
    </div>
    <div id="chapter3">
        <h3>ううう</h3>
    </div>
    <div id="chapter4">
        <h3>えええ</h3>
    </div>
</div>
</div>
var tabs;
var tabContents;

//ページ読み込み時にタブとコンテンツを取得する
window.onload = function(){
    tabs = document.getElementById('tab').getElementsByTagName('li');
    tabContents = document.getElementById('tabContents').getElementsByTagName('div');
    tabInit();
}

function tabInit(){
    for (i = 0; i < tabs.length; i++) {
        //ページ読み込み時は最初のタブ以外は非表示にする
        if (i != 0) {
            tabContents[i].style.display = 'none';
        }
        //タブにイベントを追加する
        tabs[i].onclick = function(){
            tabOpen	(this);
            return false;
        };
    }
}

function tabOpen(obj){
    var num;
    //選択されたタブを確認
    for (num = 0; num < tabs.length; num++) {
        if (tabs[num] == obj) 
            break;
    }
    //コンテンツの表示非表示を行う
    for (var i = 0; i < tabs.length; i++) {
        if (i == num) {
            tabContents[num].style.display = 'block';
            tabs[num].className = 'selected';
    }
        else {
            tabContents[i].style.display = 'none';
            tabs[i].className = null;
        }
    }
}