几天没来了,上班很忙,几乎没有时间来这个地方闲逛,今天下午写了个小小的动态树,很简单的代码,个人觉得在某些地方有些用处,它不用什么ajax框架,全部是用JavaScript写的,代码也不长,把它的一些代码放到这里,希望能够帮到需要它的朋友,首先声明,这是一个很简单的树,不建议使用到大型的系统中,其中一些功能你也可以自己改善,这只是一个初本。
代码大概如下(呵呵,因为时间问题编程好像不怎么规范,各位将就着看吧):
Code
function TreeSpand(obj,dr)
{
var parobj=obj.parentNode;
var nextobj=obj.nextSibling;
if (dr == 0) {
removeTree(parobj,obj);
}
else {
removeOther(parobj,obj);
changeimg(parobj,obj);
createTree(parobj,nextobj);
}
}
function removeTree(obj1,obj2)
{
var delobj=obj1.getElementsByTagName("ul");
for (var i = 0; i < delobj.length; i++) {
obj1.removeChild(delobj[i]);
}
obj1.childNodes[0].drag = 1;
obj1.childNodes[0].setAttribute("src","item.gif")
}
function removeOther(obj,obj1)
{
var deobj = document.getElementsByName("shousuo");
var len=deobj.length;
var x = parseInt(obj.parentNode.level);
var y = parseInt(x + 1);
for (var k = deobj.length-1; k >=0 ; k--) {
var z = parseInt(deobj[k].parentNode.parentNode.level);
if (z > x) {
var gobj = deobj[k].parentNode.parentNode;
var hobj = gobj.getElementsByTagName("li");
deobj[k].parentNode.parentNode.removeChild(deobj[k].parentNode);
}
}
}
function changeimg(obj1,obj2)
{
var ulobj=obj1.parentNode;
var liobj=ulobj.getElementsByTagName("li");
for(var j=0;j<liobj.length;j++){
liobj[j].childNodes[0].setAttribute("src","item.gif");
}
}
function createTree(obj1,obj2)
{
var list=new Array();
list[0]="aaa";
list[1]="bbb";
list[2]="ccc"; //这是树的列表名称,这里我用了一个固定数组,其实可以用var list=dblookup()来代替,dblookup()的代码没在这贴出来,功能是在试图中实现@dblookup的功能
var url="#";
var n=parseInt(obj1.parentNode.level)+1;
objj=document.createElement("ul");
objj.innerHTML="";
for(var i=0;i<list.length;i++)
objj.innerHTML=objj.innerHTML+"<li><img src='item.gif' drag='1' onclick='TreeSpand(this,this.drag)'></img><a name='shousuo' href=url>"
+list[i]+"</a></li>";
obj1.appendChild(objj);
//obj1.childNodes[0].drag=0;
obj1.childNodes[0].src="item2.gif";
objj.setAttribute("level",n);
obj1.childNodes[0].setAttribute("drag",0);
//document.getElementById("deal1").value=obj2.innerHTML;
}
function abc(obj){
alert("ok");
var list=new Array();
list[0]="aaa";
list[1]="bbb";
list[2]="ccc";
var url="#";
var parobj=obj.parentNode;
objj=document.createElement("ul");
objj.innerHTML="";
for(var i=0;i<list.length;i++)
objj.innerHTML=objj.innerHTML+"<li><img src='item.gif' drag='1' onclick='TreeSpand(this,this.drag)'></img><a name='shousuo' href=url>"
+list[i]+"</a></li>";
parobj.appendChild(objj);
}
也许大家会觉得不知道这个例子ajax在哪里,我可以告诉你,这个树是动态加载的,动态加载在dblookup函数里,它根据当前列表节点的值去视图查找相应的数据,并显示在树中,如果有朋友需要这个例子,可以留下邮箱,我整理好会尽早发给你。