深爱那片海 发表于 2015-2-4 00:23:12

PHP网页编程之复杂的树形菜单

左手拿着MOTOLOLA右手拿着NOKIA,要多潇洒,有多潇洒,哈哈,终于学会了,但是可能这个时候,又会有人不经意的拍拍肩膀对你说:哥们,别高兴的太早,你还是菜鸟,离学会还差着一大截呢!菜单   <!---
复杂的树形菜单

徐祖宁(絮聒)
2003.03
czjsz_ah@stats.gov.cn

树形菜单较滑动菜单略微庞杂一点。其次要难点在于从简约的数据描写来发生便于把持的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)?0:1;
      s += "<tr id='"+id+"' value="+i+"><td>"+id+"</td><td>"+tree_ar+"</td></tr>"; // 机关节点,注重这里的自界说属性value。感化是简化机关节点的描写,同享参数数组信息。
      if(n > tree_ar) { // 若希冀条理大于以后条理,停止本条理前往上一条理。
            s += "</td></tr></table>";
            return tree_ar;
      }
      if(n < tree_ar) { // 若希冀条理小于以后条理,递归进入下一条理。
            s += "<tr style='display:none' v=1><td></td><td>";
            var m = tree(tree_ar[++i]);
            s += "</td></tr>";
            if(m < n) { // 当递归前往值小于以后条理希冀值时,将发生一连的前往举措。
                s += "</table>";
                return m;
            }
      }
    }
    s += "</table>";
    return s;
}
</script>

<script for=pad event=onclick>
// 分枝节点的点击呼应
v = this.parentElement.rows.style;
if(v.display == 'block') {
    v.display = 'none';
    this.cells.innerHTML = "+";
    view.innerHTML = ""; // 自行修正为参数数组界说的闭合举措
}else {
    v.display = 'block';
    this.cells.innerHTML = "-";
    view.innerHTML = "<b>"+tree_ar+"</b>"; // 自行修正为参数数组界说的睁开举措
}

/**
* 以下代码用于封闭已睁开的其他分枝
* 如需自行封闭睁开的分枝则从这里直接前往或删去这段代码
*/
if(! tree_ar.type) // 如该节点为初次进入,则纪录地点条理信息
    genTreeInfo(this);
var n = 1*this.value+1;
for(i=n;i<tree_ar.length-1;i++) { // 封闭分列在以后节点以后的树
    if(tree_ar.type == "pad") {
      tree_ar.obj2.style.display = 'none';
      tree_ar.obj1.cells.innerHTML = "+";
    }
}
while(tree_ar[--n] > 1); // 回溯到以后树的出发点
while(--n >= 0) // 封闭分列在以后树的出发点之前的树
if(tree_ar.type == "pad") {
    tree_ar.obj2.style.display = 'none';
    tree_ar.obj1.cells.innerHTML = "+";
}

/** 纪录条理信息,用以简化遍历树时的庞杂的节点描写 **/
function genTreeInfo(o) {
var el = o.parentElement;
for(var i=0;i<el.rows.length;i++) {
    if(el.rows.id != "") {
      tree_ar.value].type = el.rows.id;
    }
    if(el.rows.id == "pad") {
      tree_ar.value].obj1 = el.rows;
      tree_ar.value].obj2 = el.rows;
    }
}
}
</script>

<script for=bar event=onclick>
// 无分枝节点的点击呼应
view.innerHTML = "<b>"+tree_ar+"</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>

会HTML吗?会,我能编好几个大表格排板的网页啦!

变相怪杰 发表于 2015-2-4 12:51:59

首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。

兰色精灵 发表于 2015-2-8 07:17:12

本文当是我的笔记啦,遇到的问题随时填充

admin 发表于 2015-2-19 15:35:29

兴趣是最好的老师,百度是最好的词典。

分手快乐 发表于 2015-3-6 15:04:31

你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。

小女巫 发表于 2015-3-10 01:23:49

要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。

蒙在股里 发表于 2015-3-17 03:38:48

环境搭建好,当你看见你的浏览器输出“it works\\\\\\\"时你一定是喜悦的。在你解决问题的时候,我强烈建议多读php手册。

只想知道 发表于 2015-3-20 12:18:54

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

老尸 发表于 2015-3-27 20:30:52

我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。

精灵巫婆 发表于 2015-4-14 05:18:29

对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。

深爱那片海 发表于 2015-4-16 04:09:52

这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己

透明 发表于 2015-4-23 19:12:49

本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。

愤怒的大鸟 发表于 2015-4-27 12:56:14

学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql

飘灵儿 发表于 2015-5-1 08:27:56

实践是检验自己会不会的真理。

山那边是海 发表于 2015-5-4 06:27:39

开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。

冷月葬花魂 发表于 2015-5-8 08:33:27

Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81

小魔女 发表于 2015-6-24 20:51:29

写的比较杂,因为我也是个新手,不当至于大家多多指正。

第二个灵魂 发表于 2015-6-28 21:26:49

当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标,

灵魂腐蚀 发表于 2015-7-8 03:35:21

说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。

不帅 发表于 2015-7-12 09:17:11

写的比较杂,因为我也是个新手,不当至于大家多多指正。
页: [1] 2
查看完整版本: PHP网页编程之复杂的树形菜单