用表格实现简单网站左侧导航


闲暇之余,制作一用表格实现的简单的网站导航条,分享给大家。

  调用很简单,只要将数据组织成json格式即可:格式如下:

window.onload = function()
{
     var tf="if1";
     var data=[{m:"体育网站",s:[{sn:"百度体育",st:"http://news.baidu.com/n?cmd=1&class=sportnews"},
             {sn:"搜狐体育",st:"http://sports.sohu.com/"},
             {sn:"新浪体育",st:"http://sports.sina.com.cn/"}]},
         {m:"新闻网站",s:[{sn:"百度",st:"http://news.baidu.com/"},
             {sn:"搜狐",st:"http://news.sohu.com/"},
             {sn:"新浪",st:"http://news.sina.com.cn/"}]},
         {m:"视频网站",s:[{sn:"百度视频",st:"http://vedio.baidu.com/"},
             {sn:"搜狐视频",st:"http://tv.sohu.com/"},
             {sn:"新浪视频",st:"http://vedio.sina.com.cn/"}]}
        ];
    var nav=new tableNav("table1",data,tf);
    var bautoClose=false; //打开当前导航条时其它导航条是否关闭
    nav.generateNav(bautoClose);
}

  原理很简单,简单解释如下,我们来看一个有6行1列的表格。

<table>
   <tr><td>体育网站</td></tr>
  <tr><td><a>aaa</a><br/><a>bbb</a><br/></td></tr>
  <tr><td>新闻网站</td></tr>
  <tr><td></td></tr>
  <tr><td>视频网站</td></tr>
  <tr><td></td></tr>
</table>

初始化时,将第1,3,5,。。。行显示,第2,4,6,。。行隐藏,然后在奇数行的点击事件中隐藏或显示其后一个偶数行,适当加一些样式及可。

  整个实例代码如下:供初学者学习!

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>simple struct</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <style type="text/css">
        #divtitle{
            border:solid 1px #000000;
            width:98%;
            height:100px;
            text-align:center;
        }
        #div1{
            border:solid 1px #000000;
            width:18%;
            height:700px;
            float:left;
        }
        #div2{
            
            width:80%;
            height:700px;
            float:left;
        }
        <!--偶数行,0,2,4...-->
        .oddrow{
            margin-top:1px;
        }
        .oddrow td{
            text-decoration:underline;
            background-color:#666666;
            color:#ccc;
            cursor:pointer;
        }
        <!--奇数行-->
        .evenrow{
            display:none;
        }
        .evenrow a{
            margin-left:10px;
            margin-top:2px;
        }
        .evenrow td{
            background-color:#eee;
            display:block;
        }
    </style>
    
<script type="text/javascript">
    window.onload = function()
    {
        var tf="if1";
        var data=[{m:"体育网站",s:[{sn:"百度体育",st:"http://news.baidu.com/n?cmd=1&class=sportnews"},
                                  {sn:"搜狐体育",st:"http://sports.sohu.com"},
                                  {sn:"新浪体育",st:"http://sports.sina.com.cn"}]},
                  {m:"新闻网站",s:[{sn:"百度",st:"http://news.baidu.com"},
                                  {sn:"搜狐",st:"http://news.sohu.com"},
                                  {sn:"新浪",st:"http://news.sina.com.cn"}]},
                  {m:"视频网站",s:[{sn:"百度视频",st:"http://vedio.baidu.com"},
                                  {sn:"搜狐视频",st:"http://tv.sohu.com"},
                                  {sn:"新浪视频",st:"http://vedio.sina.com.cn"}]}
                 ];
        var nav=new tableNav("table1",data,tf);
        var bautoClose=false;    //打开当前导航条时其它导航条是否关闭
        nav.generateNav(bautoClose);
    }
    
    function tableNav(tblid,data,ifname)
    {    
        var tbl= document.getElementById(tblid);
        //1.删除表格中存在的行
        for (var t = 0; t < tbl.rows.length;t++){tbl.deleteRow(t);}
        //2.添加数据
        var idx=0;
        for(var t=0;t<data.length;t++)
        {
            var row=tbl.insertRow(idx);
            var cell=row.insertCell(0);
            cell.innerHTML=data[t].m;
            row.className="oddrow";
            idx++;
            var row=tbl.insertRow(idx);
            row.className="evenrow";
            var cell=row.insertCell(0);
            for (var i=0;i<data[t].s.length;i++)
            {
                cell.innerHTML += "<a href='" +data[t].s[i].st+"' target='"+ ifname +"'>"+ data[t].s[i].sn +"</a><br />";    
            }
            row.style.display="none";
            idx++;
        }
        this.generateNav=function(bautoClose){
            for (var i = 0; i < tbl.rows.length; i++)
            if (i % 2==0)
            {
                var obj = tbl.rows[i].getElementsByTagName("td")[0];
                obj.onclick = function()
                {   
                    var o = this.parentNode.nextSibling;
                    if (o.nodeType != 1)
                    {
                        o = o.nextSibling;
                    }
                    o.style.display = (o.style.display == "block") ? "none" : "block"
                    if (bautoClose)
                    {
                        for (var j = 1; j < tbl.rows.length; j =j+ 2)
                        {
                            if (tbl.rows[j] !=o)
                            {
                                tbl.rows[j].style.display = "none";
                            }
                        }
                    }
                }
            }
        };
    }
</script>
</head>
<body >
    <div id="divtitle">
        <h1>用表格实现简单网站左侧导航</h1>
    </div>
    <div id="div1">
        <table id="table1">
        </table>
    </div>
    <div id="div2">
        <iframe id='if1' name='if1' src="" width="100%" height="100%" border=”0″ marginwidth=”0″ marginheight=”0″ allowtransparency=”yes"></iframe>
    </div>
</body>
</html>



相关阅读:
关于UltraLite所不提供的ASA功能的介绍
让IE6支持min-width最小宽度
PHP4和PHP5性能对比
JSP数据库操作例程(Use Bean)
如何禁用Vista系统USB端口
域名查询代码公布
非常不错的页面特效 建议大家看下
新手看招 Linux操作系统的目录结构一览
win7 下安装 iis7.5+php5.3的配置方法(图文)
SQLServer2005移植到Oracle10g经验总结
Linux 监视系统资源使用率
wordpress博客wp_list_categories标签
ASP.NET服务器控件PleaseWaitButton
Linux下使用Evolution收发Email
快速导航

Copyright © 2016 phpStudy |