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技巧来提高你的代码
Jan 08 Javascript
解决jQuery插件tipswindown与hintbox冲突
Nov 05 Javascript
javascript温习的一些笔记 基础常用知识小结
Jun 22 Javascript
jquery固定底网站底部菜单效果
Aug 13 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
Sep 11 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
Jan 09 Javascript
AngularJS实践之使用NgModelController进行数据绑定
Oct 08 Javascript
node实现定时发送邮件的示例代码
Aug 26 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
Jan 12 Javascript
安装Node.js并启动本地服务的操作教程
May 12 Javascript
vue2.0 实现导航守卫的具体用法(路由守卫)
May 17 Javascript
vue.js+element 默认提示中英文操作
Nov 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
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
非洲第一个咖啡超凡杯大赛承办国—卢旺达的咖啡怎么样
2021/03/03 咖啡文化
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
Yii2 rbac权限控制之菜单menu实例教程
2016/04/28 PHP
一个Action如何调用两个不同的方法
2014/05/22 Javascript
兼容主流浏览器的JS复制内容到剪贴板
2014/12/12 Javascript
Node.js的包详细介绍
2015/01/14 Javascript
javaScript实现可缩放的显示区效果代码
2015/10/26 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
浅析jQuery 遍历函数,javascript中的each遍历
2016/05/25 Javascript
three.js中文文档学习之通过模块导入
2017/11/20 Javascript
Angular 利用路由跳转到指定页面的指定位置方法
2018/08/31 Javascript
vue指令v-html使用过滤器filters功能实例
2019/10/25 Javascript
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
python中stdout输出不缓存的设置方法
2014/05/29 Python
Python ORM框架SQLAlchemy学习笔记之关系映射实例
2014/06/10 Python
python构建深度神经网络(续)
2018/03/10 Python
django请求返回不同的类型图片json,xml,html的实例
2018/05/22 Python
Python从ZabbixAPI获取信息及实现Zabbix-API 监控的方法
2018/09/17 Python
eclipse创建python项目步骤详解
2019/05/10 Python
python django model联合主键的例子
2019/08/06 Python
Python倒排索引之查找包含某主题或单词的文件
2019/11/13 Python
python列表推导和生成器表达式知识点总结
2020/01/10 Python
python使用matplotlib绘制折线图的示例代码
2020/09/22 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
Pat McGrath Labs官网:世界上最有影响力的化妆师推出的彩妆品牌
2018/01/07 全球购物
速比涛英国官网:Speedo英国
2019/07/15 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
Java中实现多态的机制
2015/08/09 面试题
公司应聘求职信
2014/06/21 职场文书
民政局离婚协议书范本
2014/10/20 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
详解PHP用mb_string处理windows中文字符
2021/05/26 PHP
bose降噪耳机音能消除人声吗
2022/04/19 数码科技