请教一个JS的问题

望火的飞蛾 2014-01-22 11:44:08
<html>

<head>

<title>简单的文件树效果</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<style type="text/css">

.tree{width:200px;border:2px inset #fff;height:400px;padding:5px;overflow:auto;}

.tree dd,.tree dt, .tree dl{margin:0;padding:0;overflow:hidden;}

.tree dd{margin-left:18px;}

.tree dt{background:url(http://www.codefans.net/jscss/demoimg/201111/tree-bg.png) no-repeat 0 0px;padding-left:35px;line-height :20px;height:20px;}

.tree dt.node-close{background-position: 0 -24px;}

.tree dt.node-open{background-position: 0 -58px;}

.tree dt a{color:#000;text-decoration:none;font: 12px/1 verdana;line-height :12px;_line-height :16px;}

.tree dt a:hover{background:#0A246A;color:#fff;}

</style>

</head>

<body>

<div id="esunTree" class="tree"></div>

</body>

<script type="text/javascript">

try{document.execCommand("BackgroundImageCache",false,true)}catch(e){};

function Tree(data, el) {

this.app=function(par,tag){return par.appendChild(document.createElement(tag))};

this.create(document.getElementById(el),data)

};

Tree.fn = Tree.prototype = {

create: function (par,group){

var host=this, length = group.length;

for (var i = 0; i < length; i++) {

var dl =this.app(par,'DL'), dt = this.app(dl,'DT'), dd = this.app(dl,'DD');

dt.innerHTML='<a href="javascript:void(0)">'+group[i]['t']+'</a>';

if (!group[i]['s'])continue;

dt.group=group[i]['s'];

dt.className+=" node-close";

dt.onclick=function (){

var dd= this.nextSibling;

if (!dd.hasChildNodes()){

host.create(dd,this.group);

this.className='node-open'

}else{

var set=dd.style.display=='none'?['','node-open']:['none','node-close'];

dd.style.display=set[0];

this.className=set[1]

}

}

}

}

};

var data=[{

t:'腾讯网络限公司',s:[

{t:'人力资源',s:[{t:'张A'}]},

{t:'风险控制',s:[{t:'李B'},{t:'赵C'},{t:'吴D'},{t:'司马E'},{t:'潭F'},{t:'袁G'}]},

{t:'系统平台',s:[{t:'资讯组',s:[{t:'王五'}]},{t:'游戏组',s:[{t:'肖十三'}]}]}

]

},

{t:'拍拍网',s:[{t:'胡一刀'}]},

{t:'盛大网络',s:[{t:'热血传奇',s:[{t:'在线充值'}]},{t:'陈天桥'}]},

{t:'新浪微博',s:[{t:'凤姐'}]}

];

var et=new Tree(data,'esunTree');

//]]>

</script>

</html>
这个树形目录中,我想给“张A"加上一个超链接,怎么弄才能成功?
...全文
206 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
望火的飞蛾 2014-01-22
  • 打赏
  • 举报
回复
引用 1 楼 kendyjack 的回复:
dt.innerHTML='<a href="javascript:void(0)">'+group[i]['t']+'</a>'; 改为 dt.innerHTML='<a href="'+(group[i]['links']?group[i]['links']:('javascript:void(0)'))+'">'+group[i]['t']+'</a>'; 然后 {t:'人力资源',s:[{t:'张A',links:"http://www.google.com.hk/"}]}, 这里加上你要的链接
这个可以用,还有个问题,能不能再帮我改下:当一个展开时,另一个自动闭合?
  • 打赏
  • 举报
回复
扩展角度来讲,应该从数据源入手,如下 将张A 李B 加上百度链接,加链接只需加 自定义属性link
<html>

<head>

<title>简单的文件树效果</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<style type="text/css">

.tree{width:200px;border:2px inset #fff;height:400px;padding:5px;overflow:auto;}

.tree dd,.tree dt, .tree dl{margin:0;padding:0;overflow:hidden;}

.tree dd{margin-left:18px;}

.tree dt{background:url(http://www.codefans.net/jscss/demoimg/201111/tree-bg.png) no-repeat 0 0px;padding-left:35px;line-height :20px;height:20px;}

.tree dt.node-close{background-position: 0 -24px;}

.tree dt.node-open{background-position: 0 -58px;}

.tree dt a{color:#000;text-decoration:none;font: 12px/1 verdana;line-height :12px;_line-height :16px;}

.tree dt a:hover{background:#0A246A;color:#fff;}

</style>

</head>

<body>

<div id="esunTree" class="tree"></div>

</body>

<script type="text/javascript">

try{document.execCommand("BackgroundImageCache",false,true)}catch(e){};

function Tree(data, el) {

    this.app=function(par,tag){return par.appendChild(document.createElement(tag))};

    this.create(document.getElementById(el),data)

};

Tree.fn = Tree.prototype = {

    create: function (par,group){

        var host=this, length = group.length;

        for (var i = 0; i < length; i++) {

            var dl =this.app(par,'DL'), dt = this.app(dl,'DT'), dd = this.app(dl,'DD');
			var link=group[i].link?group[i].link:'javascript:void(0)';
            dt.innerHTML='<a href="'+link+'">'+group[i].t+'</a>';

            if (!group[i]['s'])continue;

            dt.group=group[i]['s'];

            dt.className+=" node-close";

            dt.onclick=function (){

                var dd= this.nextSibling;

                if (!dd.hasChildNodes()){

                     host.create(dd,this.group);

                     this.className='node-open'

                 }else{

                    var set=dd.style.display=='none'?['','node-open']:['none','node-close'];

                     dd.style.display=set[0];

                     this.className=set[1]

                 }

            }

        }

    }

};

var data=[{

        t:'腾讯网络限公司',s:[

            {t:'人力资源',s:[{t:'张A',link:'http://www.baidu.com'}]},

            {t:'风险控制',s:[{t:'李B',link:'http://www.baidu.com'},{t:'赵C'},{t:'吴D'},{t:'司马E'},{t:'潭F'},{t:'袁G'}]},

            {t:'系统平台',s:[{t:'资讯组',s:[{t:'王五'}]},{t:'游戏组',s:[{t:'肖十三'}]}]}

        ]

    },

    {t:'拍拍网',s:[{t:'胡一刀'}]},

    {t:'盛大网络',s:[{t:'热血传奇',s:[{t:'在线充值'}]},{t:'陈天桥'}]},

    {t:'新浪微博',s:[{t:'凤姐'}]}

];

var et=new Tree(data,'esunTree');

 //]]>

</script>

</html>
hutao93 2014-01-22
  • 打赏
  • 举报
回复
if (group[i]['t'] === '张A') {
                    dt.innerHTML = '<a href="http://www.taobao.com" target="_bank">' + group[i]['t'] + '</a>';
                } else {
                    dt.innerHTML = '<a href="javascript:void(0)">' + group[i]['t'] + '</a>';
                }
这个意思吗?
嘻哈大咖秀 2014-01-22
  • 打赏
  • 举报
回复
dt.innerHTML='<a href="javascript:void(0)">'+group[i]['t']+'</a>'; 吧这个改下就好了
夜雨_Jason 2014-01-22
  • 打赏
  • 举报
回复
dt.innerHTML='<a href="javascript:void(0)">'+group[i]['t']+'</a>'; 改为 dt.innerHTML='<a href="'+(group[i]['links']?group[i]['links']:('javascript:void(0)'))+'">'+group[i]['t']+'</a>'; 然后 {t:'人力资源',s:[{t:'张A',links:"http://www.google.com.hk/"}]}, 这里加上你要的链接
夜雨_Jason 2014-01-22
  • 打赏
  • 举报
回复
引用 5 楼 u010564881 的回复:
[quote=引用 1 楼 kendyjack 的回复:] dt.innerHTML='<a href="javascript:void(0)">'+group[i]['t']+'</a>'; 改为 dt.innerHTML='<a href="'+(group[i]['links']?group[i]['links']:('javascript:void(0)'))+'">'+group[i]['t']+'</a>'; 然后 {t:'人力资源',s:[{t:'张A',links:"http://www.google.com.hk/"}]}, 这里加上你要的链接
这个可以用,还有个问题,能不能再帮我改下:当一个展开时,另一个自动闭合?[/quote]

<html>

<head>

<title>简单的文件树效果</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<style type="text/css">

.tree{width:200px;border:2px inset #fff;height:400px;padding:5px;overflow:auto;}

.tree dd,.tree dt, .tree dl{margin:0;padding:0;overflow:hidden;}

.tree dd{margin-left:18px;}

.tree dt{background:url(http://www.codefans.net/jscss/demoimg/201111/tree-bg.png) no-repeat 0 0px;padding-left:35px;line-height :20px;height:20px;}

.tree dt.node-close{background-position: 0 -24px;}

.tree dt.node-open{background-position: 0 -58px;}

.tree dt a{color:#000;text-decoration:none;font: 12px/1 verdana;line-height :12px;_line-height :16px;}

.tree dt a:hover{background:#0A246A;color:#fff;}

</style>

</head>

<body>

<div id="esunTree" class="tree"></div>

</body>

<script type="text/javascript">

try{document.execCommand("BackgroundImageCache",false,true)}catch(e){};

function Tree(data, el) {

    this.app=function(par,tag){return par.appendChild(document.createElement(tag))};

    this.create(document.getElementById(el),data)

};

Tree.fn = Tree.prototype = {

    create: function (par,group){

        var host=this, length = group.length;

        for (var i = 0; i < length; i++) {

            var dl =this.app(par,'DL'), dt = this.app(dl,'DT'), dd = this.app(dl,'DD');

            //dt.innerHTML='<a href="javascript:void(0)">'+group[i]['t']+'</a>';
            dt.innerHTML='<a href="'+(group[i]['links']?group[i]['links']:('javascript:void(0)'))+'">'+group[i]['t']+'</a>';

            if (!group[i]['s'])continue;

            dt.group=group[i]['s'];

            dt.className+=" node-close";

            dt.onclick=function (){
            	var iThis = this;
            	var aDt = this.parentNode.parentNode.childNodes;
            	for(var i=0; i<aDt.length; i++){
                	if(aDt[i].nodeName.toLowerCase()=="dl" && aDt[i].getElementsByTagName("dt")[0]!=iThis && aDt[i].getElementsByTagName("dd")[0].innerHTML !=""){
                		aDt[i].getElementsByTagName("dt")[0].className = "node-close";
                		aDt[i].getElementsByTagName("dd")[0].style.display = "none";
                		
                	}
                }
                
				
                var dd= this.nextSibling;
               
                if (!dd.hasChildNodes()){

                     host.create(dd,this.group);

                     this.className='node-open';
                     dd.style.display = "block";

                 }else{
                    var set=dd.style.display=='none'?['block','node-open']:['none','node-close'];

                    dd.style.display=set[0];

                    this.className=set[1]
                }
				


            }

        }

    }

};

var data=[{

        t:'腾讯网络限公司',s:[

            {t:'人力资源',s:[{t:'张A',links:"http://www.google.com.hk/"}]},

            {t:'风险控制',s:[{t:'李B'},{t:'赵C'},{t:'吴D'},{t:'司马E'},{t:'潭F'},{t:'袁G'}]},

            {t:'系统平台',s:[{t:'资讯组',s:[{t:'王五'}]},{t:'游戏组',s:[{t:'肖十三'}]}]}

        ]

    },

    {t:'拍拍网',s:[{t:'胡一刀'}]},

    {t:'盛大网络',s:[{t:'热血传奇',s:[{t:'在线充值'}]},{t:'陈天桥'}]},

    {t:'新浪微博',s:[{t:'凤姐'}]}

];

var et=new Tree(data,'esunTree');

 //]]>

</script>

</html>
KeepSayingNo 2014-01-22
  • 打赏
  • 举报
回复
在展开下一个之前,把之前的闭合就行了,你要记住上一个NODE的ID

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧