スクリプトでタブを生成する

タブ機能はスクリプトでタブと内容を生成することができます。サンプル04ではタブを生成する領域をあらかじめHTMLで指定していますが、これは必ずしも必要ではなく、状況に応じてプログラムでタグを生成しても問題ありません。その場合にはスタイルシートのクラスを設定するのを忘れないようにしてください。

まず、YAHOO.widget.TabView()でタブオブジェクトを作成します。タブを追加するには作成されたタブオブジェクトのaddTab()メソッドを使います。追加するタブ情報をパラメータとして指定します。タブ情報を持つオブジェクトはnew YAHOO.widget.Tab()により生成することができます。YAHOO.widget.Tab()は最初のパラメータがオプションになっており、タブに表示するラベルと内容を指定できます。ラベルはlabel、内容はcontentで指定します。特定のタブを最初から表示させておく(アクティブにする)にはactive: trueを指定します。active : falseを指定すると非アクティブになります。

生成したタブオブジェクトはノードリストになっているため、ページ上の何かのノードに連結しなければなりません。ページに表示する場合にはappendTo(document.body)とします。document.bodyではなくタグ(オブジェクト)を指定すると、そのタグにタブが表示されるようになります。

サンプル04の実行結果

スクリプトでタブが生成された

サンプル04

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=utf-8">
        <title>YUIタブビューサンプル</title>
        <link rel="stylesheet" type="text/css" href="css/tabview.css"> 
        <link rel="stylesheet" type="text/css" href="css/border_tabs.css"> 
        <link rel="stylesheet" type="text/css" href="css/main.css"> 
        <script type="text/javascript" src="js/yahoo-dom-event.js"></script> 
        <script type="text/javascript" src="js/element-beta.js"></script> 
        <script type="text/javascript" src="js/connection.js"></script> 
        <script type="text/javascript" src="js/tabview.js"></script> 
        <script type="text/javascript"><!--
            window.onload = function() {
                var tabObj = new YAHOO.widget.TabView("myTab");
                tabObj.addTab( new YAHOO.widget.Tab({ 
                    label: "タブ1", 
                    content: "<p>タブ1の内容です。</p>",
                    active: true
                }));
                tabObj.addTab( new YAHOO.widget.Tab({ 
                    label: "タブ2", 
                    content: "<p>タブ2の内容です。スクリプトでも生成できます。</p>",
                    active: false
                }));
                tabObj.appendTo(document.body);
            }
        // --></script>
    </head>
    <body>
    <h1>YUIタブビューサンプル(スクリプトで生成)</h1>
    <div id="myTab" class="yui-navset"></div>
    </body>
</html>

プログラムで生成した場合ではなく、あらかじめHTMLで定義されている場合に特定のタブをアクティブ化するにはスタイルシートのクラスを指定します。タブラベルを示す<li>タグに class="selected"を指定すると、そのタブがアクティブになります。HTMLで指定するのではなく、スクリプトで制御する場合にはタブオブジェクトのset()メソッドを使います。set("activeIndex", 1)とすると2番目のタブがアクティブになります。最初のタブ番号が0で、以後1ずつ増えていきます。サンプル05では2番目のタブをアクティブにしています。

サンプル05の実行結果。アクティブタブを指定している

サンプル05

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="content-type" content="text/html;charset=utf-8">
        <title>YUIタブビューサンプル</title>
        <link rel="stylesheet" type="text/css" href="css/tabview.css"> 
        <link rel="stylesheet" type="text/css" href="css/border_tabs.css"> 
        <link rel="stylesheet" type="text/css" href="css/main.css"> 
        <script type="text/javascript" src="js/yahoo-dom-event.js"></script> 
        <script type="text/javascript" src="js/element-beta.js"></script> 
        <script type="text/javascript" src="js/connection.js"></script> 
        <script type="text/javascript" src="js/tabview.js"></script> 
        <script type="text/javascript"><!--
            window.onload = function() {
                var tabObj = new YAHOO.widget.TabView("myTab");
                tabObj.set("activeIndex", 1);
            }
        // --></script>
    </head>
    <body>
    <h1>YUIタブビューサンプル(アクティブタブを指定)</h1>
    <div id="myTab" class="yui-navset">
        <ul class="yui-nav">
            <li><a href="#tab1">タブ1</a></li>
            <li><a href="#tab2">タブ2</a></li>
        </ul>
        <div class="yui-content">
            <div><p>タブ1の内容です。</p></div>
            <div><p>タブ2の内容です。簡単にタブインターフェースが実現できます。</p></div>
        </div>
    </div>
    </body>
</html>