javascript实现在下拉列表中显示多级树形菜单的方法


Posted in Javascript onAugust 12, 2015

本文实例讲述了javascript实现在下拉列表中显示多级树形菜单的方法。分享给大家供大家参考。具体如下:

这里演示在下拉列表框中显示分级的菜单,在很多网站都可以看到的效果,很实用,下拉列表框中的选项是利用JS控制输出,如果你有更好的办法不用JS来显示,那最好了,因为像这种菜单用JS来实现,多多少少有点麻烦。

运行效果截图如下:

javascript实现在下拉列表中显示多级树形菜单的方法

具体代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>在下拉列表中显示的多级树形菜单</title>
<meta http-equiv="content-type" content="text/html;charset=gb2312">
<script type="text/javascript"> 
var data =new Array(); 
data[0]= {id:'0',pid:'1',text:'河北'}; 
data[1]= {id:'1',pid:'-1',text:'中国'}; 
data[2]= {id:'2',pid:'6',text:'莫斯科'}; 
data[3]= {id:'3',pid:'0',text:'河南'}; 
data[4]= {id:'4',pid:'0',text:'北京'}; 
data[5]= {id:'5',pid:'3',text:'湖南'}; 
data[6]= {id:'6',pid:'-1',text:'俄罗斯'}; 
function TreeSelector(item,data,rootId){ 
this._data = data; 
this._item = item; 
this._rootId = rootId; 
} 
TreeSelector.prototype.createTree = function(){ 
var len =this._data.length; 
for( var i= 0;i<len;i++){ 
if ( this._data[i].pid == this._rootId){ 
this._item.options.add(new Option(".."+this._data[i].text,this._data[i].id)); 
for(var j=0;j<len;j++){ 
this.createSubOption(len,this._data[i],this._data[j]); 
} 
} 
} 
} 
TreeSelector.prototype.createSubOption = function(len,current,next){ 
var blank = ".."; 
if ( next.pid == current.id){ 
intLevel =0; 
var intlvl =this.getLevel(this._data,this._rootId,current); 
for(a=0;a<intlvl;a++) 
blank += ".."; 
blank += "├-"; 
this._item.options.add(new Option(blank + next.text,next.id)); 
for(var j=0;j<len;j++){ 
this.createSubOption(len,next,this._data[j]); 
} 
} 
} 
TreeSelector.prototype.getLevel = function(datasources,topId,currentitem){ 
var pid =currentitem.pid; 
if( pid !=topId) 
{ 
for(var i =0 ;i<datasources.length;i++) 
{ 
if( datasources[i].id == pid) 
{ 
intLevel ++; 
this.getLevel(datasources,topId,datasources[i]); 
} 
} 
} 
return intLevel; 
} 
</script> 
</head>
<body>
<select id="myselect"></select> 
<script language=javascript type="text/javascript"> 
var ts = new TreeSelector(document.getElementById("myselect"),data,-1); 
ts.createTree(); 
</script> 
</body>
</html>

希望本文所述对大家的javascript程序设计有所帮助。

Javascript 相关文章推荐
IE bug table元素的innerHTML
Jan 11 Javascript
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
Apr 12 Javascript
confirm的用法示例用于按钮操作时确定是否执行
Jun 19 Javascript
浅谈JavaScript Array对象
Dec 29 Javascript
javascript中in运算符用法分析
Apr 28 Javascript
jquery无限级联下拉菜单简单实例演示
Nov 23 Javascript
详解AngularJS中ng-src指令的使用
Sep 07 Javascript
React学习笔记之高阶组件应用
Jun 02 Javascript
前端axios下载excel文件(二进制)的处理方法
Jul 31 Javascript
vue-router权限控制(简单方式)
Oct 29 Javascript
基于javascript处理二进制图片流过程详解
Jun 08 Javascript
JS数组索引检测中的数据类型问题详解
Jan 11 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
Aug 12 #Javascript
JavaScript实现点击单选按钮改变输入框中文本域内容的方法
Aug 12 #Javascript
JavaScript检测并限制复选框选中个数的方法
Aug 12 #Javascript
JavaScript入门基础
Aug 12 #Javascript
js实现将选中值累加到文本框的方法
Aug 12 #Javascript
javascript实现简单的分页特效
Aug 12 #Javascript
JavaScript实现网站访问次数统计代码
Aug 12 #Javascript
You might like
PHP 配置open_basedir 让各虚拟站点独立运行
2009/11/12 PHP
yii框架中的Url生产问题小结
2012/01/16 PHP
php数组中删除元素的实现代码
2012/06/22 PHP
javascript StringBuilder类实现
2008/12/22 Javascript
JQuery 无废话系列教程(一) jquery入门 [推荐]
2009/06/23 Javascript
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
9个JavaScript评级/投票插件
2010/01/18 Javascript
使用CDN和AJAX加速WordPress中jQuery的加载
2015/12/05 Javascript
JS实现漂亮的时间选择框效果
2016/08/20 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
Vue2.0父组件与子组件之间的事件发射与接收实例代码
2017/09/19 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
2018/01/15 Javascript
Vue + better-scroll 实现移动端字母索引导航功能
2018/05/07 Javascript
微信小程序提取公用函数到util.js及使用方法示例
2019/01/10 Javascript
javascript实现智能手环时间显示
2020/09/18 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
2020/12/23 Javascript
Swift 3.0在集合类数据结构上的一些新变化总结
2016/07/11 Python
一个基于flask的web应用诞生 用户注册功能开发(5)
2017/04/11 Python
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
利用python实现在微信群刷屏的方法
2019/02/21 Python
浅谈Python 递归算法指归
2019/08/22 Python
python中字典增加和删除使用方法
2020/09/30 Python
突破canvas语法限制 让他支持链式语法
2012/12/24 HTML / CSS
解决Firefox下不支持outerHTML问题代码分享
2014/06/04 HTML / CSS
英国Zoro工具:手动工具,电动工具和个人防护用品
2016/11/02 全球购物
超市营业员岗位职责
2013/12/20 职场文书
教师研修随笔感言
2014/01/23 职场文书
会计学专业学生的求职信范文
2014/01/27 职场文书
捐书活动倡议书
2015/04/27 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
深入理解go缓存库freecache的使用
2022/02/15 Golang
Python语言中的数据类型-序列
2022/02/24 Python
在Docker容器中部署SQL Server
2022/04/11 Servers
使用Python获取字典键对应值的方法
2022/04/26 Python
Golang实现可重入锁的示例代码
2022/05/25 Golang