怎样建立树型的目录结构 一个办法 : id 和 prarent_id 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><HTML><HEAD><TITLE>无限级关联菜单[完全js版](树型)</TITLE><META http-equiv=Content-Type content="text/html; charset=gb2312"><SCRIPT language=JavaScript type=text/javascript>/* 功能: 无限级关联菜单[完全js版](树型) 作者: 多菜鸟 时间: 2007-04-07 blog: http://blog.csdn.net/kingerq/ 数组形如: menuArr[ID] = [名称, 父ID]; */ var menuArr = new Array(); menuArr[1] = ["中国", 0]; menuArr[2] = ["美国", 0]; menuArr[3] = ["日本", 0]; menuArr[4] = ["浙江", 1]; menuArr[5] = ["福建", 1]; menuArr[6] = ["东京", 3]; menuArr[7] = ["杭州", 4]; menuArr[8] = ["温州", 4]; menuArr[9] = ["鹿城", 8];var classmenuArr = menuArr; //提取数组var classmenuLen = menuArr.length; //数组count//分类列表var url = "index.php?fun=listProduct&id="; //var prefix = new Array("http://community.csdn.net/ui/scripts/System/_resource/MzTreeView/_plus1.gif","http://community.csdn.net/ui/scripts/System/_resource/MzTreeView/_minus1.gif","http://community.csdn.net/ui/scripts/System/_resource/MzTreeView/_line4.gif","http://community.csdn.net/ui/scripts/System/_resource/MzTreeView/_line1.gif");//显示分类function listTree(pid, step){ //参数pid,step级 var str = ""; for( var i = 1; i < classmenuLen; i++ ) { //注意数组初始值 if( classmenuArr[i] == undefined ) continue; //如果数组未赋值,则跳至下一个循环 if( classmenuArr[i][1] == pid ) { //如果数组的第 为PID str += "<div class='cutTitle'><table width=230 border=0 cellspacing=0 cellpadding=0><tr><td width="+(20*(step+1))+">"; //打印div,table for( var j=0; j<step; j++ ) { str += "<img src='"+prefix[2]+"' border=0>"; //打印 |图象sept次 } str += readKid(i) //测试是否有子项目, ? "<img id='img"+i+"' src='"+prefix[0]+"' onclick='chkImg("+i+", "+(step+1)+");' border=0>" //打印+图像,名为img(i),onlick,事件为点击事件(参数为(i,step+1) : "<img src='"+prefix[3]+"' border=0>"; //没有,打印|- str += "</td>"; //一单元格 str += "<td width='"+(230-20*(step+1))+"' id=\"listtxt1\"><a href='"+(step==0?url.replace(/listProduct2/g, "listProduct"): url)+i+"'"+(returnGetValue("pid")==i? " class='MenuOn'" : "")+">"+classmenuArr[i][0]+"</a></td>"; str += "</tr>"; str += "<tr id='tr"+i+"' style='display:none;'><td colspan=2 id='l"+i+"'></td></tr>"; str += "</table></div>"; //alert(str); //str += listTree(i, step+1); } } //alert(str); return str;}//点击图片事件function chkImg(pid, step){ var d = document.getElementById("l"+pid); var dTr = document.getElementById("tr"+pid); var dImg = document.getElementById("img"+pid); if( dTr.style.display == "none" ) { d.innerHTML=listTree(pid, step); //document.getElementById("kkk").innerText = d.innerHTML; dTr.style.display = "block"; dImg.src=prefix[1]; if( navigator.appName == "Netscape" ) dTr.style.display = "table-row"; }else{ dTr.style.display = "none"; dImg.src=prefix[0]; }}//测试是否有子项目function readKid(pid){ for( var i = 1; i < classmenuLen; i++ ) { if( classmenuArr[i] == undefined ) continue; if( classmenuArr[i][1] == pid ) { return true; } } return false;}//展开菜单//str 以","号分隔的目录ID字符串function spreadKid(str){ var pat = /[\d,]+/; if( ! pat.test( str ) ) return; //如果没有返回 var arr = str.split(","); for( var i=0; i < arr.length-1; i++ ) { chkImg(arr[i], i+1); //调用chkimg函数 }}//取得指定URL参数值 //什么用function returnGetValue(pVar,pURL){ pURL = pURL || window.location.href; try{ pURL=decodeURIComponent(pURL)//即使是用decodeURI也是同样的结果 }catch(e){ // } var vars =pURL.split("?"); if(vars.length==1) return ""; var varsList=vars[1].split("&"); var equalString; for(var i=0;equalString=varsList[i];i++){ var equalArray=equalString.split("="); if(equalArray[0]==pVar) return equalArray[1] || ""; } return "";}//document.write( listTree(0,0 ) );</SCRIPT><STYLE type=text/css>.cutTitle { FONT-SIZE: 12px; OVERFLOW: hidden; WIDTH: 150px; WHITE-SPACE: nowrap; HEIGHT: auto; TEXT-OVERFLOW: ellipsis}</STYLE><META content="MSHTML 6.00.2900.3429" name=GENERATOR></HEAD><BODY><SCRIPT language=javascript>document.write( listTree(0,0) );//显示列表 //ater(listTree(0,0));//显示列表//spreadKid("1,4,8,9");//展开指定项</SCRIPT></BODY></HTML>这是一网友的生成的js树,代码简单可以看看,当然,它是不完全,改一下可用,我用它生成了一个和CSDN一样的简单树但生成树的原理却是一样的,不同的是,你点某个节点时,它是用js来展开,而PHP则是得新刷新页生成树 大家帮我看看以下代码,可以列出所有文件目录,但是ID号传不到子目录,不知道怎么回事。function tree_list_new($dir, $curdir,$id_in) { static $id = 0; $tree_list = array(); $root_list1 = listdir($dir); $root_list2 = $root_list1['dirlist']; if($root_list2 <> "") { foreach($root_list2 as $key=>$val) { $id++; $id_n = $id_in."_".$id_in.$id; $id_param = $id_in.$id; print $id_param; $tree_list[] = array("name" => $val, "id" => $id_n, "url" => urlencode($curdir."/".$val), "child" =>tree_list($dir.$val."/", $curdir."/".$val,$id_param)); } } Return $tree_list;} function tree_list_new($dir, $curdir,$id_in) { static $id = 0; $tree_list = array(); $root_list1 = listdir($dir); $root_list2 = $root_list1['dirlist']; if($root_list2 <> "") { foreach($root_list2 as $key=>$val) { $id++; $id_n = $id_in."_".$id_in.$id; $id_param = $id_in.$id; print $id_param; $tree_list[] = array("name" => $val, "id" => $id_n, "url" => urlencode($curdir."/".$val), "child" =>tree_list($dir.$val."/", $curdir."/".$val,$id_param)); } }Return $tree_list;} 500元请作仿ms 界面 求一完整的demo,用php创建access数据库,同时新建表增加数据。 关于全局变量的使用,2天了,弄不出来。特请教大家。 关于国外主机申请的疑问 请教DEDECMS如何制作树形菜单 新手问题:print php安装问题,结贴很快的!~~~~ php中如何检测string的charset? 求一函数的用法,doubleval 请问有谁用过shuipfcms吗? php 与sql2000连接问题... 大家帮忙看一下这个面试的题目
<HTML><HEAD><TITLE>无限级关联菜单[完全js版](树型)</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<SCRIPT language=JavaScript type=text/javascript>
/*
功能: 无限级关联菜单[完全js版](树型)
作者: 多菜鸟
时间: 2007-04-07
blog: http://blog.csdn.net/kingerq/
数组形如:
menuArr[ID] = [名称, 父ID];
*/
var menuArr = new Array();
menuArr[1] = ["中国", 0];
menuArr[2] = ["美国", 0];
menuArr[3] = ["日本", 0];
menuArr[4] = ["浙江", 1];
menuArr[5] = ["福建", 1];
menuArr[6] = ["东京", 3];
menuArr[7] = ["杭州", 4];
menuArr[8] = ["温州", 4];
menuArr[9] = ["鹿城", 8];
var classmenuArr = menuArr; //提取数组
var classmenuLen = menuArr.length; //数组count
//分类列表
var url = "index.php?fun=listProduct&id="; //
var prefix = new Array("http://community.csdn.net/ui/scripts/System/_resource/MzTreeView/_plus1.gif",
"http://community.csdn.net/ui/scripts/System/_resource/MzTreeView/_minus1.gif",
"http://community.csdn.net/ui/scripts/System/_resource/MzTreeView/_line4.gif",
"http://community.csdn.net/ui/scripts/System/_resource/MzTreeView/_line1.gif");//显示分类
function listTree(pid, step){ //参数pid,step级
var str = "";
for( var i = 1; i < classmenuLen; i++ ) { //注意数组初始值
if( classmenuArr[i] == undefined ) continue; //如果数组未赋值,则跳至下一个循环
if( classmenuArr[i][1] == pid ) { //如果数组的第 为PID
str += "<div class='cutTitle'><table width=230 border=0 cellspacing=0 cellpadding=0><tr><td width="+(20*(step+1))+">"; //打印div,table
for( var j=0; j<step; j++ ) {
str += "<img src='"+prefix[2]+"' border=0>"; //打印 |图象sept次
}
str += readKid(i) //测试是否有子项目,
? "<img id='img"+i+"' src='"+prefix[0]+"' onclick='chkImg("+i+", "+(step+1)+");' border=0>"
//打印+图像,名为img(i),onlick,事件为点击事件(参数为(i,step+1)
: "<img src='"+prefix[3]+"' border=0>"; //没有,打印|-
str += "</td>"; //一单元格
str += "<td width='"+(230-20*(step+1))+"' id=\"listtxt1\"><a href='"+(step==0?url.replace(/listProduct2/g, "listProduct"): url)+i+"'"+(returnGetValue("pid")==i? " class='MenuOn'" : "")+">"+classmenuArr[i][0]+"</a></td>";
str += "</tr>";
str += "<tr id='tr"+i+"' style='display:none;'><td colspan=2 id='l"+i+"'></td></tr>";
str += "</table></div>";
//alert(str);
//str += listTree(i, step+1);
}
}
//alert(str);
return str;
}
//点击图片事件
function chkImg(pid, step){
var d = document.getElementById("l"+pid);
var dTr = document.getElementById("tr"+pid);
var dImg = document.getElementById("img"+pid);
if( dTr.style.display == "none" ) {
d.innerHTML=listTree(pid, step);
//document.getElementById("kkk").innerText = d.innerHTML;
dTr.style.display = "block";
dImg.src=prefix[1];
if( navigator.appName == "Netscape" )
dTr.style.display = "table-row";
}else{
dTr.style.display = "none";
dImg.src=prefix[0];
}
}
//测试是否有子项目
function readKid(pid){
for( var i = 1; i < classmenuLen; i++ ) {
if( classmenuArr[i] == undefined ) continue;
if( classmenuArr[i][1] == pid ) {
return true;
}
}
return false;
}//展开菜单
//str 以","号分隔的目录ID字符串
function spreadKid(str){
var pat = /[\d,]+/;
if( ! pat.test( str ) ) return; //如果没有返回
var arr = str.split(",");
for( var i=0; i < arr.length-1; i++ ) {
chkImg(arr[i], i+1); //调用chkimg函数
}
}
//取得指定URL参数值 //什么用
function returnGetValue(pVar,pURL){
pURL = pURL || window.location.href;
try{
pURL=decodeURIComponent(pURL)//即使是用decodeURI也是同样的结果
}catch(e){
//
} var vars =pURL.split("?");
if(vars.length==1) return "";
var varsList=vars[1].split("&");
var equalString;
for(var i=0;equalString=varsList[i];i++){
var equalArray=equalString.split("=");
if(equalArray[0]==pVar)
return equalArray[1] || "";
}
return "";
}
//document.write( listTree(0,0 ) );</SCRIPT><STYLE type=text/css>.cutTitle {
FONT-SIZE: 12px; OVERFLOW: hidden; WIDTH: 150px; WHITE-SPACE: nowrap; HEIGHT: auto; TEXT-OVERFLOW: ellipsis
}
</STYLE><META content="MSHTML 6.00.2900.3429" name=GENERATOR></HEAD>
<BODY>
<SCRIPT language=javascript>
document.write( listTree(0,0) );//显示列表
//ater(listTree(0,0));//显示列表
//spreadKid("1,4,8,9");//展开指定项
</SCRIPT>
</BODY></HTML>这是一网友的生成的js树,代码简单可以看看,当然,它是不完全,改一下可用,我用它生成了一个和CSDN一样的简单树但生成树的原理却是一样的,不同的是,你点某个节点时,它是用js来展开,而PHP则是得新刷新页生成树
function tree_list_new($dir, $curdir,$id_in) {
static $id = 0;
$tree_list = array();
$root_list1 = listdir($dir);
$root_list2 = $root_list1['dirlist'];
if($root_list2 <> "") {
foreach($root_list2 as $key=>$val) {
$id++;
$id_n = $id_in."_".$id_in.$id;
$id_param = $id_in.$id;
print $id_param;
$tree_list[] = array("name" => $val,
"id" => $id_n,
"url" => urlencode($curdir."/".$val),
"child" =>tree_list($dir.$val."/", $curdir."/".$val,$id_param));
}
}
Return $tree_list;
}
function tree_list_new($dir, $curdir,$id_in) {
static $id = 0;
$tree_list = array();
$root_list1 = listdir($dir);
$root_list2 = $root_list1['dirlist'];
if($root_list2 <> "") {
foreach($root_list2 as $key=>$val) {
$id++;
$id_n = $id_in."_".$id_in.$id; $id_param = $id_in.$id;
print $id_param;
$tree_list[] = array("name" => $val,
"id" => $id_n,
"url" => urlencode($curdir."/".$val),
"child" =>tree_list($dir.$val."/", $curdir."/".$val,$id_param)); }
}
Return $tree_list;
}