简单的树型结构。。。不用从数据库读取,写死 不知道这样的怎么写,,,帮忙提示一下,树型结构,,或者以前有实例代码就贴出来一下 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主截止到2008-06-19 08:12:49的汇总数据:注册日期:2008-6-18上次登录:2008-6-18发帖数:3结贴数:0结贴率: 0.00%如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html <style>table {font-size = 9pt}td {height = 10px}</style><body><span id="menus"></span><span id="view"></span></body><script>/*** 构造树,初值为0*/function tree(n) { var id = new Array("bar","pad","#","+"); if(n == 0) { // 初始化变量 n = 1; i = 0; s = ""; } s += "<table>"; for(;i<tree_ar.length-1;i++) { var k = (n >= tree_ar[i+1][0])?0:1; s += "<tr id='"+id[k]+"' value="+i+"><td>"+id[k+2]+"</td><td>"+tree_ar[i][1]+"</td></tr>"; // 构造节点,注意这里的自定义属性value。作用是简化构造节点的描述,共享参数数组信息。 if(n > tree_ar[i+1][0]) { // 若期望层次大于当前层次,结束本层次返回上一层次。 s += "</td></tr></table>"; return tree_ar[i+1][0]; } if(n < tree_ar[i+1][0]) { // 若期望层次小于当前层次,递归进入下一层次。 s += "<tr style='display:none' v=1><td></td><td>"; var m = tree(tree_ar[++i][0]); s += "</td></tr>"; if(m < n) { // 当递归返回值小于当前层次期望值时,将产生连续的返回动作。 s += "</table>"; return m; } } } s += "</table>"; return s;}</script><script for=pad event=onclick>// 分枝节点的点击响应v = this.parentElement.rows[this.rowIndex+1].style;if(v.display == 'block') { v.display = 'none'; this.cells[0].innerHTML = "+"; view.innerHTML = ""; // 自行修改为参数数组定义的闭合动作}else { v.display = 'block'; this.cells[0].innerHTML = "-"; view.innerHTML = "<b>"+tree_ar[this.value][1]+"</b>"; // 自行修改为参数数组定义的展开动作}/*** 以下代码用于关闭已展开的其他分枝* 如需自行关闭展开的分枝则从这里直接返回或删去这段代码*/if(! tree_ar[this.value].type) // 如该节点为首次进入,则记录所在层次信息 genTreeInfo(this);var n = 1*this.value+1;for(i=n;i<tree_ar.length-1;i++) { // 关闭排列在当前节点之后的树 if(tree_ar[i].type == "pad") { tree_ar[i].obj2.style.display = 'none'; tree_ar[i].obj1.cells[0].innerHTML = "+"; }}while(tree_ar[--n][0] > 1); // 回溯到当前树的起点while(--n >= 0) // 关闭排列在当前树的起点之前的树if(tree_ar[n].type == "pad") { tree_ar[n].obj2.style.display = 'none'; tree_ar[n].obj1.cells[0].innerHTML = "+";}/** 记录层次信息,用以简化遍历树时的复杂的节点描述 **/function genTreeInfo(o) { var el = o.parentElement; for(var i=0;i<el.rows.length;i++) { if(el.rows[i].id != "") { tree_ar[el.rows[i].value].type = el.rows[i].id; } if(el.rows[i].id == "pad") { tree_ar[el.rows[i].value].obj1 = el.rows[i]; tree_ar[el.rows[i].value].obj2 = el.rows[i+1]; } }}</script><script for=bar event=onclick>// 无分枝节点的点击响应view.innerHTML = "<b>"+tree_ar[this.value][1]+"</b>"; // 自行修改为参数数组定义的点击动作</script><script>/*** 基本参数数组,根据具体应用自行扩展* 数据可较简单的由服务器端提供* 列1:节点层次* 列2:节点标题* 其余自行扩充*/tree_ar = new Array( new Array(1,"节点1"), new Array(1,"节点2"), new Array(2,"节点3"), new Array(2,"节点4"), new Array(3,"节点5"), new Array(4,"节点6"), new Array(5,"节点7"), new Array(6,"节点8"), new Array(7,"节点9"), new Array(2,"节点10"), new Array(1,"节点11"), new Array(2,"节点12"), new Array(2,"节点13"), new Array(1,"节点14"), new Array(1,"") // 为简化终止判断附加的空数据项);/*** 创建菜单 ***/menus.innerHTML =tree(0);</script> jsp页面,,,这个页面在框架的左边,,,left。jsp 请教, Seleniem test里, 如何选择不同版本的浏览器? 字符串截取问题 cookie禁用后怎么还会发送cookie呢 查询ip库 ,大家给看看什么错误 高分求教 自由工作流相关内容 dsoframe ie7 问题 who can help me ? 求支持中文文件名的smartupload组件???急急急!!! tomcat下servlet无法访问!请高手帮忙,急!!! strust如何实现:插入一条纪录(id字段用的是序列),紧接着将id字段的值返回! java返回的list,在jsp页面用ajax如何处理 域名配置问题,急
楼主截止到2008-06-19 08:12:49的汇总数据:
注册日期:2008-6-18
上次登录:2008-6-18
发帖数:3
结贴数:0
结贴率: 0.00%
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
<style>
table {font-size = 9pt}
td {height = 10px}
</style>
<body>
<span id="menus"></span>
<span id="view"></span>
</body><script>
/**
* 构造树,初值为0
*/
function tree(n) {
var id = new Array("bar","pad","#","+");
if(n == 0) { // 初始化变量
n = 1;
i = 0;
s = "";
}
s += "<table>";
for(;i<tree_ar.length-1;i++) {
var k = (n >= tree_ar[i+1][0])?0:1;
s += "<tr id='"+id[k]+"' value="+i+"><td>"+id[k+2]+"</td><td>"+tree_ar[i][1]+"</td></tr>"; // 构造节点,注意这里的自定义属性value。作用是简化构造节点的描述,共享参数数组信息。
if(n > tree_ar[i+1][0]) { // 若期望层次大于当前层次,结束本层次返回上一层次。
s += "</td></tr></table>";
return tree_ar[i+1][0];
}
if(n < tree_ar[i+1][0]) { // 若期望层次小于当前层次,递归进入下一层次。
s += "<tr style='display:none' v=1><td></td><td>";
var m = tree(tree_ar[++i][0]);
s += "</td></tr>";
if(m < n) { // 当递归返回值小于当前层次期望值时,将产生连续的返回动作。
s += "</table>";
return m;
}
}
}
s += "</table>";
return s;
}
</script><script for=pad event=onclick>
// 分枝节点的点击响应
v = this.parentElement.rows[this.rowIndex+1].style;
if(v.display == 'block') {
v.display = 'none';
this.cells[0].innerHTML = "+";
view.innerHTML = ""; // 自行修改为参数数组定义的闭合动作
}else {
v.display = 'block';
this.cells[0].innerHTML = "-";
view.innerHTML = "<b>"+tree_ar[this.value][1]+"</b>"; // 自行修改为参数数组定义的展开动作
}/**
* 以下代码用于关闭已展开的其他分枝
* 如需自行关闭展开的分枝则从这里直接返回或删去这段代码
*/
if(! tree_ar[this.value].type) // 如该节点为首次进入,则记录所在层次信息
genTreeInfo(this);
var n = 1*this.value+1;
for(i=n;i<tree_ar.length-1;i++) { // 关闭排列在当前节点之后的树
if(tree_ar[i].type == "pad") {
tree_ar[i].obj2.style.display = 'none';
tree_ar[i].obj1.cells[0].innerHTML = "+";
}
}
while(tree_ar[--n][0] > 1); // 回溯到当前树的起点
while(--n >= 0) // 关闭排列在当前树的起点之前的树
if(tree_ar[n].type == "pad") {
tree_ar[n].obj2.style.display = 'none';
tree_ar[n].obj1.cells[0].innerHTML = "+";
}/** 记录层次信息,用以简化遍历树时的复杂的节点描述 **/
function genTreeInfo(o) {
var el = o.parentElement;
for(var i=0;i<el.rows.length;i++) {
if(el.rows[i].id != "") {
tree_ar[el.rows[i].value].type = el.rows[i].id;
}
if(el.rows[i].id == "pad") {
tree_ar[el.rows[i].value].obj1 = el.rows[i];
tree_ar[el.rows[i].value].obj2 = el.rows[i+1];
}
}
}
</script><script for=bar event=onclick>
// 无分枝节点的点击响应
view.innerHTML = "<b>"+tree_ar[this.value][1]+"</b>"; // 自行修改为参数数组定义的点击动作
</script><script>
/**
* 基本参数数组,根据具体应用自行扩展
* 数据可较简单的由服务器端提供
* 列1:节点层次
* 列2:节点标题
* 其余自行扩充
*/
tree_ar = new Array(
new Array(1,"节点1"),
new Array(1,"节点2"),
new Array(2,"节点3"),
new Array(2,"节点4"),
new Array(3,"节点5"),
new Array(4,"节点6"),
new Array(5,"节点7"),
new Array(6,"节点8"),
new Array(7,"节点9"),
new Array(2,"节点10"),
new Array(1,"节点11"),
new Array(2,"节点12"),
new Array(2,"节点13"),
new Array(1,"节点14"),
new Array(1,"") // 为简化终止判断附加的空数据项
);/*** 创建菜单 ***/
menus.innerHTML =tree(0);
</script>