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 相关文章推荐
直接生成打开窗口代码,不必下载
May 14 Javascript
用JavaScript仿PS里的羽化效果代码
Dec 20 Javascript
JavaScript定义变量和变量优先级问题探讨
Oct 11 Javascript
关于JS中match() 和 exec() 返回值和属性的测试
Mar 21 Javascript
jQuery实现区域打印功能代码详解
Jun 17 Javascript
js移动焦点到最后位置的简单方法
Nov 25 Javascript
微信小程序开发之圆形菜单 仿建行圆形菜单实例
Dec 12 Javascript
AngularJS常见过滤器用法实例总结
Jul 06 Javascript
Vue.js2.0中的变化小结
Oct 24 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
Jun 25 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
Aug 02 jQuery
何时使用Map来代替普通的JS对象
Apr 29 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实现二分查找算法代码分享
2011/06/24 PHP
需要注意的几个PHP漏洞小结
2012/02/05 PHP
PHP中isset与array_key_exists的区别实例分析
2015/06/02 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
2017/05/17 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP多维数组排序array详解
2017/11/21 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
Javascript计算时间差的函数分享
2011/07/04 Javascript
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
2014/05/02 Javascript
JavaScript取得WEB安全颜色列表的方法
2015/07/14 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
浅谈JQ中mouseover和mouseenter的区别
2016/09/13 Javascript
Javascript 调用 ActionScript 的简单方法
2016/09/22 Javascript
微信小程序 教程之注册程序
2016/10/17 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
深入Node TCP模块的理解
2019/03/13 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
JavaScript实现简易聊天对话框(加滚动条)
2020/02/10 Javascript
解决Vue + Echarts 使用markLine标线(precision精度问题)
2020/07/20 Javascript
有关wxpython pyqt内存占用问题分析
2014/06/09 Python
Python+Pika+RabbitMQ环境部署及实现工作队列的实例教程
2016/06/29 Python
python爬虫入门教程--利用requests构建知乎API(三)
2017/05/25 Python
利用Python进行异常值分析实例代码
2017/12/07 Python
Python数据分析模块pandas用法详解
2019/09/04 Python
python使用numpy实现直方图反向投影示例
2020/01/17 Python
python爬虫模块URL管理器模块用法解析
2020/02/03 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
2020/06/14 Python
Python+MySQL随机试卷及答案生成程序的示例代码
2021/02/01 Python
canvas进阶之如何画出平滑的曲线
2018/10/15 HTML / CSS
NHL官方在线商店:Shop.NHL.com
2020/05/01 全球购物
领导证婚人证婚词
2014/01/13 职场文书
教师绩效考核方案
2014/01/21 职场文书
环境保护建议书
2014/08/26 职场文书
重阳节标语大全
2014/10/07 职场文书
2016年母亲节寄语
2015/12/04 职场文书