使用表格与json实现的网站导航

使用方法:直接调用,把数据构建成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);
}

 

下面是整个实例代码,供大家参考:

<!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>使用表格与json实现的网站导航 - www.web2bar.cn </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>使用表格与json实现的网站导航</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>