JavaScript + PHP 应用二:网页设计中树形菜单的动态实现

javascript+php 树形菜单在网页设计中应用 javascript 结合 php 树形菜单在网页设计中应用,详细介绍,适合入门级 立即下载

  树形菜单,熟悉Windows程序管理器的读者一定不会陌生。单击项目左侧的+号,项目展开;再次单击,项目收缩。读过很多篇有关树形菜单的JavaScript实现方法,原理很简单,都是利用Style中display属性的控制。笔者本文的重点并不侧重于此,倒是想谈一谈如何实现每一次从数据库中提取数据并动态更新树形菜单。
  树形菜单主要用来导航。网站有很多栏目,每个栏目下有很多子栏目,栏目经常变动,如增加新栏目,改变现有栏目名称,调整主次栏目之间关系等等,如果每一次都去改动页面代码,非常不便。而且因为信息都存放在数据库中,动态实现变得可能和必要。
  本文并不侧重理论,只是为大家提供自己的一段代码,和大家一起来探讨一下PHP实现问题。为了便于说明,笔者对数据库作了一些改动,假设菜单字符串存放在menu表中,main字段存放主菜单字符串,sub字段存放子菜单字符串,subid字段存放子菜单标识。


<?php
 $DB = new My_DB();
 $DB->query("select subid, main from menu group by main order by subid");
 while ($DB->next_record()){
  $Main[] = $DB->f("main");
  $Key[] = $DB->f("subid");
 }
 /*首先,连接数据库,查询所谓的栏目名称。以上代码采用了PHPLib中的数据库函数,其中,$Main数组用来存放主菜单字符串,$Key数组用来存放子菜单关键字。大家可以采用多种方法,因人而异*/
 for ($i=0;$i<count($Main);$i++){
  $j=0;
  $DB->query("select sub, subid from menu where main='".$Main[$i]."'");
  ////利用query查询出与当前主菜单匹配的所有子菜单字符串
?>
/*以下代码和HTML代码结合到一起,大家看起来可能会不习惯,但这样代码显得简洁多了。为了模拟树形菜单,笔者源程序中使用了几个图片文件,l.gif, m.gif和p.gif,并利用onMouse事件模拟菜单的动态效果。PHP语句主要是为Javascript制作标签(tag)的id*/
<table width="140" border="0" cellspacing="0" cellpadding="0" class="f14">
  <tr>
    <td width="15"></td>
    <td id="<?php echo "m_".$Key[$i]; ?>" width="9" height="21"><img src="images/p.gif" width="9" height="21"></td>
    <td>
      <div style="cursor:hand" onclick="javascript:MakeMenu('<?php echo $Key[$i]; ?>')"  onMouseOver="javascript:MakeShow('in')" onMouseOut="javascript:MakeShow('out')">&nbsp;<?php echo $Main[$i]; ?></div>
    </td>
  </tr>
  <tr id="<?php echo "s_".$Key[$i]; ?>" style="display:none">
    <td width="15"></td>
    <td colspan="2">
        <table width="100%" border="0" cellspacing="0" cellpadding="0" class="f9">
        <?php
         while ($DB->next_record()){
        ?>
          <tr>
           <td width="12">
<img src="images/<?php echo ++$j==$DB->nf()?"l.gif":"t.gif"; ?>" width="12" height="21"></td>
////需要说明一下,$j变量在这里用来决定显示什么图片。此句的意思是,子菜单的最后一项显示l.gif,其它项显示t.gif
            <td>&nbsp;<?php echo "<a href=/"yoururl/">yourstr</a>";?></td>
          </tr>
        <?php
         }
        ?>
        </table>
    </td>
  </tr>
</table>
<?php
 }
?>
到此为止,PHP的使命已经结束,大家可以把代码运行一下,看看输出是什么。总而言之,它的输出结果正是树形菜单所要的结构。下面我们需要构造Javascript代码。很简单,我不打算作向详细的描述。
<script language="javascript1.2">
<!--
 function MakeMenu(id){
  mid="m_"+id;
  sid="s_"+id;
  with (document){
   if (all(sid).style.display=="none"){
    all(sid).style.display="";
    all(mid).innerHTML="<img src='images/m.gif' width='9' height='21'>";
   }else{
    all(sid).style.display="none";
    all(mid).innerHTML="<img src='images/p.gif' width='9' height='21'>";
   }
  }
 }
 
 function MakeShow(to){
  with (document){
   if (to=='in'){
    window.event.srcElement.style.color="red";
    window.event.srcElement.style.fontWeight="bold";
   }else{
    window.event.srcElement.style.color="";
    window.event.srcElement.style.fontWeight="";
   }
  }
 } 
-->
</script>
  熟悉Javascript的读者,以上代码理解起来应该不成问题。这段代码的难点就在于PHP的实现部分,调试时遇到很大麻烦,总是提示Javascirpt错误。在排除万难之后,把这段代码奉献给大家,希望能为大家以后的网页设计工作节省一点宝贵的时间。

Css3折叠菜单-可展开的树形导航菜单.rar Css3折叠菜单-可展开的树形导航菜单,其实就是折叠、展开式的菜单,应用了HTML5重绘而成,无使用jquery,完全CSS3技术实现,面向Android手机等移动终端设备浏览,请注意不要使用IE等浏览器查看效果。 立即下载

相关推荐

树型结构自动生成HTML系统

PHP+HTML开发,树型结构自动生成HTML文件

20241205私教课笔记 文档管理系统 不同角色看到的菜单不一样

20241207 09.00-11.00 3/20 课。

未来已来,AI时代,学AI编程,做AI量化,就来大鹏AI教育。 498

php 角色权限菜单设置demo

树型结构,角色权限。 直接可以运行的PHP demo. //只适合两级菜单 $data=array( 1 => array('id'=>'1','parentid'=>0,'name'=>'一级栏目一'), 2 => array('id'=>'2','parentid'=>0,'name'=>'一级栏目二'), 3 => array('id'=>'3','parentid'=>1,'name'=>'二级栏目一'), 4 => array('id'=>'4','parentid'=>1,'name'=>'二级栏目二'), 5 => array('id'=>'5','parentid'=>2,'name'=>'二级栏目三') ); $tree = new Tree; // new 之前请记得包含tree文件! $tree->tree($data); // 数据格式请参考 tree方法上面的注释! // 下拉菜单选项使用 get_tree方法 $html=''; $str = "\$spacer\$name"; $html .= $tree->get_tree(0,$str,-1).''; $script=' '; echo $script.$html;

thinkphp5动态读库 显示树形菜单栏,目前是两级,还可以三级,等无限拓展

如图:效果     控制器的写法:我是在公共构造函数里面写的 $authRule = db('auth_rule')-&gt;where('level&lt;2')-&gt;select(); level 是级别,我的数据库中 0是顶级,1是二级, 目前只是想二级联动输出,所以小于2...

heyuqing32的博客 3299

H3C IPsec over GRE VPN 实验

配置 IPsec over GRE VPN 来连通两端内网

M建的博客 2473

【Qt】Qt5.15在线安装避坑指南:从代理配置到组件选择的完整实践

本文详细介绍了Qt5.15在线安装的全流程避坑指南,包括代理配置、组件选择和常见问题解决方案。通过使用Fiddler工具和国内镜像源,可显著提升下载速度。文章还提供了组件选择的黄金法则和安装后的验证步骤,帮助开发者高效完成Qt5.15的安装与配置。

weixin_42550052的博客 270

PHP结合Javascript实现的动态树型菜单

我们经常看到很多网站上有windows的资源管理器一样的树型菜单,对于树型结构的数据分类显示来说,非常的实用。如果想自己实现这一功能,怎么办?实际上方法很多,有的采用以开发控件的形式实行,有的则是用纯javascript来实现的,而下面我们则是以动态网页开发语言PHP结合JavaScript来实现的。JavaScript部分很简单,主要是实现菜单展开,折叠以及图标的变换,菜单展开的时候用什么图标,

探索时空 1995

DINOv3 网络结构解析:从 ViT 到 ConvNeXt 的双路线设计

本文深入解析了DINOv3网络结构的双路线设计,包括ViT和ConvNeXt两种主干架构。ViT路线通过轴向旋转位置编码解决了传统ViT对固定分辨率的依赖,而ConvNeXt路线则优化了卷积设计,提升了实时处理能力。文章还探讨了Gram Anchoring、混合自监督目标等关键技术,展示了DINOv3在多任务和多模态应用中的强大潜力。

weixin_29214199的博客 564

thinkphp6 循环输出树状导航

qq_39947874的博客 604

ADS2020与SystemVue2020Update1.0同机安装避坑指南:解决License冲突,实现EVM联合仿真

本文详细介绍了ADS2020与SystemVue2020 Update1.0同机安装的完整解决方案,重点解决License冲突问题,实现EVM联合仿真。通过合理的安装顺序、路径规划和License服务配置,确保两款EDA工具和谐共存,为射频与微波电路设计提供高效仿真环境。

weixin_30271335的博客 348

Coppelia Sim (v-REP)仿真 机器人3D相机手眼标定与实时视觉追踪 (一)

先把这连个都添加到场景中,然后把kinect的depth相机拖到vision sensor中,把kinect的script也拖到vision sensor中,同时要注意修改深度相机的坐标,及修改script,删掉/rgb部分。由于需要导入到仿真场景中PDF文件不能直接导入,所以需要生成图下文件,使用windows自带的画图工具,生成以厘米为单位的图像格式,大小和标定板的设置大小一直。可以生成需要用的标定板的文件,设置标定板的大小,棋盘格的大小,等相关的参数,之后可以保存PDF文件。设置plane的大小。

hong3731的专栏 1753

Thinkphp树形菜单相关方法

1 <?php 2 3 /** 4 * Menu(菜单管理) 5 */ 6 namespace Admin\Controller; 7 use Common\Controller\AdminbaseController; 8 class MenuController extends AdminbaseController { ...

weixin_30522095的博客 267

基于Simulink的永磁同步电机三闭环(位置/速度/电流)控制仿真

本文详细介绍了基于Simulink的永磁同步电机三闭环控制系统设计与实现方法。系统采用位置环、速度环、电流环的三层嵌套结构,通过坐标变换(Clark/Park)实现解耦控制,达到精密定位目的。文章包含完整的建模步骤:从主电路搭建、三环PID设计到坐标变换与SVPWM调制实现,并提供了核心控制算法的MATLAB代码。通过工业机械臂关节场景验证,系统在阶跃响应(稳态误差0.002°)、正弦跟踪(误差0.008°)和抗扰动性能(恢复时间0.05s)方面表现优异。最后还提出了前馈补偿、扰动观测器等优化方向。该方案适

xiaoheshang_123的博客 280

JAVASCRIPT + PHP 应用二:网页设计中树形菜单的动态实现

树形菜单,熟悉Windows程序管理器的读者一定不会陌生。单击项目左侧的+号,项目展开;再次单击,项目收缩。读过很多篇有关树形菜单的 JavaScript实现方法,原理很简单,都是利用Style中display属性的控制。笔者本文的重点并不侧重于此,倒是想谈一谈如何实现每一次从 数据库中提取数据并动态更新树形菜单。  树形菜单主要用来导航。网站有很多栏目,每个栏目下有很多子栏目,栏目经常变动,如增

luochengbang的专栏 1861

[QMT量化交易小白入门]-二、如何用miniQMT获取沪深A股的板块列表、历史行情数据和实时行情数据

本专栏主要是介绍QMT的基础用法,常见函数,写策略的方法,也会分享一些量化交易的思路,大概会写100篇左右。QMT的相关资料较少,在使用过程中不断的摸索,遇到了一些问题,记录下来和大家一起沟通,共同进步,自己淋过雨了,希望大家都有一把伞。

木头大左的博客 5656

ARM 之十六 详解 CMSIS 版本变迁、各组件使用示例

目前,CMSIS 已经发展到了第六版,其目录结构也发生了重大的变化。在不断发展中,很多原来 CMSIS 的组件被不断独立出去,并因此成立了很多开源社区,今天就来学习一下!由于 CMSIS 已经包含了相当丰富的文档,因此,本文重点学习版本之间的变化以及一些实际使用示例。

技术干货 1955

递归法写出一树形菜单,将所有的menu列出来

123、有一表 menu(mainmenu,submenu,url),请用递归法写出一树形菜单,将所有的menu列出来      amp;$lt;title>JS打印amp;$lt;/head>            function GenerateMenu($id=0,$str="")   {   $result=mysql_query("select mainmenu,url

lifushan123的专栏 2731

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

18个引人注目的导航菜单

chengzhaolu的专栏 2490

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

36个引人注目的导航菜单(上)

<br />导航菜单在任何网站中都占有举足轻重的地位。对于充满了大量页面与文章的大型网站来说,下拉菜单于选项卡菜单非常受欢迎,这是因为用户可以通过他们 轻松的浏览网站,同时运用动态的选项卡显示内容能节省网站大量的空间。加入你也想创建一个属于自己的与众不同导航菜单的话,jQuery是提供一套定制选 项的正确选择。这就是为什么我想大家推荐36个jquery导航菜单实例的原因。<br /> 1.jQuery 选项卡界面 / 选项卡结构菜单教程<br />这种类型的菜单在网页设计与开发中非常著 名的。此片教程

夏天的异想世界 654

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

【转】36个经典的JQuery导航菜单演示+下载

现在很多网站或博客上都流行使用JQuery菜单样式,这种样式看起来很非常好看,导航效果比纯文字或图片效果要好的多,下面是从网上搜集整理的36个经典的JQuery导航菜单。1.jQuery 选项卡界面 / 选项卡结构菜单教程 这种类型的菜单在网页设计与开发中非常著名的。此片教程是向大家展示如何使用jQuery的向下滑动/向上滑动效果创建属于你自己的选项卡菜单。要非常留心此演示哟,你一定会喜欢...

weixin_33801856的博客 288

36个引人注目JQuery导航菜单 (转)

转自:http://www.cnblogs.com/ywqu/archive/2009/08/15/1546559.html 1.jQuery 选项卡界面 / 选项卡结构菜单教程 这种类型的菜单在网页设计与开发中非常著名的。此片教程是向大家展示如何使用jQuery的向下滑动/向上滑动效果创建属于你自己的选项卡菜单。要非常留心此演示哟,你一定会喜欢上它的。 Preview ...

weixin_30242907的博客 168

javascript window.open

下载中心 | 破釜学院 | 网页模板 | 破釜论坛     加入收藏 设为主页 站内搜索 学院首页 网页制作 平面设计 编程开发 操作系统 网络安全 数据库 服务器区 去买书 招聘

zgh2002007的专栏 872

我很喜欢研究这些比较酷的效果

jquery简洁的响应式导航下拉菜单代码https://www.mk2048.com/demo/demo_target_desc.php?id=ia0bjhjkjjquery简洁响应式导航菜单代码jQuery css3扑克洗牌和扑克牌翻转效果代码https://www.mk2048.com/demo/demo_target_desc.php?id=ia0j0ikaajQuery css3扑克洗牌,...

u011927449的博客 280

css相关工具

附加 工具 http://www.ziuo.cn/box/css-editor http://www.ziuo.cn/box/中英文颜色代码参考手册.html http://www.ziuo.cn/box/网页配色表.html http://www.ziuo.cn/box/网页配色器.html 网站常用中英文对照表(这些在建站中都应该会用到) 网站导航 Site Ma...

交流是一个不断学习的平台,在轻松快乐中提高自己 176

TP6 + Layui实现无限极分类

TP6 + Layui实现无限极分类

weixin_44981396的博客 1263
上一篇: JavaScript+PHP 应用一:网页制作中双下拉菜单的动态实现
下一篇: 嵌入式Web视频点播系统实现方法
tttk
博客等级 码龄27年 37粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值