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 相关文章推荐
JS Timing
Apr 21 Javascript
javascript倒计时功能实现代码
Jun 07 Javascript
jquery获取当前点击对象的value方法
Feb 28 Javascript
jQuery实现Div拖动+键盘控制综合效果的方法
Mar 10 Javascript
JavaScript对象数组如何按指定属性和排序方向进行排序
Jun 15 Javascript
JS实现页面打印功能
Mar 16 Javascript
结合mint-ui移动端下拉加载实践方法总结
Nov 08 Javascript
vue2.0使用swiper组件实现轮播效果
Nov 27 Javascript
详解SPA中前端路由基本原理与实现方式
Sep 12 Javascript
小程序实现授权登陆的解决方案
Dec 02 Javascript
angularjs实现table表格td单元格单击变输入框/可编辑状态示例
Feb 21 Javascript
webpack DllPlugin xxx is not defined解决办法
Dec 13 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分页显示制作详细讲解
2006/12/05 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
PHP获取photoshop写入图片文字信息的方法
2015/03/31 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
ThinkPHP框架整合微信支付之刷卡模式图文详解
2019/04/10 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
动态调用css文件——jquery的应用
2007/02/20 Javascript
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
javascript结合fileReader 实现上传图片
2015/01/30 Javascript
理解JS绑定事件
2016/01/19 Javascript
javascript事件委托的用法及其好处简析
2016/04/04 Javascript
JavaScript利用Date实现简单的倒计时实例
2017/01/12 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
Vue源码解析之Template转化为AST的实现方法
2018/12/14 Javascript
JavaScript函数定义方法实例详解
2019/03/05 Javascript
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
python实现12306火车票查询器
2017/04/20 Python
老生常谈Python startswith()函数与endswith函数
2017/09/08 Python
Python基于argparse与ConfigParser库进行入参解析与ini parser
2021/02/02 Python
英国最大的奢侈品零售网络商城:Flannels
2016/09/16 全球购物
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
全球性的在线商店:Vogca
2019/05/10 全球购物
农救科工作职责
2013/11/27 职场文书
四风存在的原因分析
2014/02/11 职场文书
成绩单家长评语大全
2014/04/16 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
反四风个人对照检查材料思想汇报
2014/09/25 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
创业计划书之美甲店
2019/09/20 职场文书
Mysql Show Profile
2021/04/05 MySQL
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
2022/06/25 Servers