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 相关文章推荐
基于jQuery的图片剪切插件
Aug 03 Javascript
客户端js性能优化小技巧整理
Nov 05 Javascript
使用jQuery异步加载 JavaScript脚本解决方案
Apr 20 Javascript
Javascript中拼接大量字符串的方法
Feb 05 Javascript
理解javascript中try...catch...finally
Dec 25 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
Mar 30 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
Aug 01 Javascript
jQuery控制元素隐藏和显示
Mar 03 Javascript
理解Angular的providers给Http添加默认headers
Jul 04 Javascript
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
js纯前端实现腾讯cos文件上传功能的示例代码
May 14 Javascript
VUE实现图片验证码功能
Nov 18 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-MySQL教程归纳总结
2008/06/07 PHP
php仿ZOL分页类代码
2008/10/02 PHP
11个PHP 分页脚本推荐
2011/08/15 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
JavaScript confirm选择判断
2008/10/18 Javascript
C#中TrimStart,TrimEnd,Trim在javascript上的实现
2011/01/17 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
js数组循环遍历数组内所有元素的方法
2014/01/18 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
2015/03/03 Javascript
15位和18位身份证JS校验的简单实例
2016/07/18 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
深入理解node.js之path模块
2017/05/03 Javascript
详解JS浏览器事件循环机制
2019/03/27 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
微信小程序实现轨迹回放的示例代码
2019/12/13 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
2020/10/24 Javascript
Python中用Ctrl+C终止多线程程序的问题解决
2013/03/30 Python
举例区分Python中的浅复制与深复制
2015/07/02 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
VTK与Python实现机械臂三维模型可视化详解
2017/12/13 Python
深入flask之异步非堵塞实现代码示例
2018/07/31 Python
如何在Django中添加没有微秒的 DateTimeField 属性详解
2019/01/30 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
Python守护进程实现过程详解
2020/02/10 Python
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
财务会计应届生求职信
2013/11/24 职场文书
酒店总经理助理岗位职责
2014/02/01 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
中学生旷课检讨书500字
2014/10/29 职场文书
疾病证明书
2015/06/19 职场文书
统招统分证明
2015/06/23 职场文书
学习党章心得体会2016
2016/01/15 职场文书