ASP中js左侧多级菜单动态的解决方案

 昨晚想搞一个js菜单,搞了一个晚上都没弄出来。后来百度了下,有点狂汗~~~

实现的效果很简单,就是点一下显示,再点一下就隐藏,只不过是多了几级的问题。好,现在来说说我的设计思路,首先从第一级别开始,添加如下代码:

<div><a onclick="news_pro('1.1')">1</a></div> 
<div id="1.1" >
<div> <a onclick="news_pro('1.1.1')">1.1</a></div>
</div>

这就出现两次类别了,点父级显示(隐藏)子级菜单,JS代码也就一句话:

function news_pro(o)
{
var obj=document.getElementById(o)
obj.style.display==""? obj.style.display="none": obj.style.display=""; 
}

是不是有点太简单了,没错,就是这么简单,不过还没完,我们继续往下看;接着添加三级和四级子菜单:

<div><a onclick="news_pro('1.1')">1</a></div>
<div id="1.1">
<div> <a onclick="news_pro('1.1.1')">1.1</a></div>
<div id="1.1.1" >
<div>  <A onclick="news_pro('1.1.1.1')">1.1.1</a></div>
<div id="1.1.1.1">
<div>   1.1.1.1</div>
<div>   1.1.1.2</div>
</div>
<div>  1.1.2</div>
</div>
<div> 1.2</div>
<div> 1.3</div>
</div> 
js代码还是只有那一行,so easy吧,可是真的就这样完了吗?答案是NONONO!当你点其中的一级时,页面发生跳转,这是我们想要的,但是左边的菜单却又变成了原来的样子,并没有保存我刚才点击的状态,那该怎么办呢?因为同事是要用到ASP里去,好像没有视图状态这个东东,那用session保存吗?好像能行得通,但是如果你点击快一点,就发现菜单有时候点几次都会不同,根本反应不过来或是session丢失了,最后不巧我发现我的命名很有意思,一级是1,二级是1.1三级是1.1.1,四级是1.1.1.1,想到什么?想到了数据库设计多级类别的查询吧!?好像discuz里面的类别就是这么设计的。它查询也很快,那我也给它来个快速的,灵机一动,就so happy了。

代码如下,采用url传值的方式:

<div><a onclick="news_pro('1.1')" href="?id=1.1">1</a></div>
<div id="1.1" <%If InStr(request.querystring("id"),"1.1")=0 Then response.write style='display:none;'%>>
<div> <a onclick="news_pro('1.1.1')" href="?id=1.1.1">1.1</a></div>
<div id="1.1.1" style="display:none;" <%If InStr(request.querystring("id"),"1.1.1")=0 Then response.write style='display:none;'%>>
<div>  <A onclick="news_pro('1.1.1.1')" href="?id=1.1.1.1">1.1.1</a></div>
<div id="1.1.1.1" <%If InStr(request.querystring("id"),"1.1.1.1")=0 Then response.write style='display:none;'%>>
<div>   1.1.1.1</div>
<div>   1.1.1.2</div>
</div>
<div>  1.1.2</div>
</div>
<div> 1.2</div>
<div> 1.3</div>
</div>
<div><a >2</a></div>
<div><a >3</a></div>

我相信这个代码不管理asp或是asp.net都区别不大,其实用纯js也可以做到,不过既然是用在asp里的,干嘛要多写js呢?好了,功能实现了。大家都OK了,如果你有不同的方法,欢迎贴出来大家一起分享。从学习中进步。。。

时间: 2024-09-10 15:34:54

ASP中js左侧多级菜单动态的解决方案的相关文章

js左侧多级菜单动态的解决方案_javascript技巧

复制代码 代码如下: <div><a onclick="news_pro('1.1')">1</a></div> <div id="1.1" > <div> <a onclick="news_pro('1.1.1')">1.1</a></div> </div> 这就出现两次类别了,点父级显示(隐藏)子级菜单,JS代码也就一句话:

asp.net js三级联动菜单实现方法(1/3)

asp教程.net js三级联动菜单实现方法 在ie5.5, ie8, firefox 2.0.0.12, chrome 8.0.552.237下可用 ashx中,通过传入的参数从数据库教程中获取相应的值. 参数名: type:值为regiontwo(表示获取二级地区),或regionthree(表示获取三级地区), oneid,表示一级地区编号, twoid,表示二级地区编号 其中getregiontwoinfo和getregionthreeinfo为获取二级和三级地区编号及名称的方法 pub

ASP 中利用OWC 服务器端组件动态生成图表

动态|服务器|图表 引:Web程序开发中,经常需要从数据库表文件中提取数据,并对大批量的数据进行分析比较,此时最常用也是最直观明了的表现方法莫过于绘制图表. ASP擅长服务器端的Web编程,操作后台数据库更是它的强项.但是用ASP制作实时数据库图表有点困难,因为ASP本身并不支持图表功能,只能借助第三方控件进行开发,如VB的MSChart 控件.而微软推出的实时数据库图表制作组件-- O W C(Microsoft Office Web Components),为在Web中绘制图形提供了灵活的同

在ASP中自动创建多级文件夹的函数(使用FSO)

 FSO中有个方法是CreateFolder,但是这个方法只能在其上一级文件夹存在的情况下创建新的文件夹,所以我就写了一个自动创建多级文件夹的函数,在生成静态页面等方面使用非常方便.函数:  ' --------------------------------' 自动创建指定的多级文件夹' strPath为绝对路径' 引用请保留版权' by im286_Anjer' 2005-4-3Function AutoCreateFolder(strPath) ' As Boolean        On

ASP中自动生成多级文件夹的函数(使用FSO)

FSO中有个方法是CreateFolder,但是这个方法只能在其上一级文件夹存在的情况下创建新的文件夹,所以我就写了一个自动创建多级文件夹的函数,在生成静态页面等方面使用非常方便.   函数:   ' --------------------------------   ' 自动创建指定的多级文件夹   ' strPath为绝对路径   ' 引用请保留版权   ' by im286_Anjer   ' 2005-4-3   Function AutoCreateFolder(strPath) '

在ASP中自动创建多级文件夹的函数

创建|函数 FSO中有个方法是CreateFolder,但是这个方法只能在其上一级文件夹存在的情况下创建新的文件夹,所以我就写了一个自动创建多级文件夹的函数,在生成静态页面等方面使用非常方便. 函数: --------------------------------' 自动创建指定的多级文件夹' strPath为绝对路径' 引用请保留版权' by im286_Anjer' 2005-4-3Function AutoCreateFolder(strPath) ' As Boolean       

asp中使用redim、preserve创建动态数组实例_应用技巧

asp中REDIM的功能是动态定义数组长度 动态数组里面的一个语句,只能出现在过程里面,可以多次使用.可以改变数组大小,和维数. 格式: REDIM [Preserve] 数组名(下标1[下标2....]) Preserve 保留动态数组的内容(不用的话,每次执行REDIM语句,当前存储的语句会全部丢失) 例如: 复制代码 代码如下: Dim DynArray() '定义数组DynArray()为动态数组 REDIM Preserve DynArray(20)'为该数组分配元数个数 这样对编程中

asp中使用redim、preserve创建动态数组实例

asp中REDIM的功能是动态定义数组长度 动态数组里面的一个语句,只能出现在过程里面,可以多次使用.可以改变数组大小,和维数. 格式: REDIM [Preserve] 数组名(下标1[下标2....]) Preserve 保留动态数组的内容(不用的话,每次执行REDIM语句,当前存储的语句会全部丢失) 例如: 复制代码 代码如下: Dim DynArray() '定义数组DynArray()为动态数组 REDIM Preserve DynArray(20)'为该数组分配元数个数 这样对编程中

asp.net 点击右侧菜单,左侧表格里的数据根据点击的菜单节点显示相应的内容,菜单不需要动态的

问题描述 asp.net 点击右侧菜单,左侧表格里的数据根据点击的菜单节点显示相应的内容,菜单不需要动态的 asp.net 点击右侧菜单,左侧表格里的数据根据点击的菜单节点显示相应的内容,表格里的数据是从数据库里获取的,菜单不需要动态的 解决方案 数据都是从数据库里搜索出来,通过前段的操作,动态生成sql语句,搜索出要的数据 解决方案二: 一个简单的的方式是用iframe的方式 1.显示左侧菜单,参考代码如下: 前台: 要显示的菜单名称 解决方案三: 要显示的菜单名称/asp:LinkButto