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 相关文章推荐
20款效果非常棒的 jQuery 插件小结分享
Nov 18 Javascript
JS 实现Table相同行的单元格自动合并示例代码
Aug 27 Javascript
javascript文件中引用依赖的js文件的方法
Mar 17 Javascript
javascript数组输出的两种方式
Jan 13 Javascript
javascript数组排序汇总
Jul 07 Javascript
JavaScript中Form表单技术汇总(推荐)
Jun 26 Javascript
简单的JS轮播图代码
Jul 18 Javascript
ASP.NET jquery ajax传递参数的实例
Nov 02 Javascript
详谈表单重复提交的三种情况及解决方法
Aug 16 Javascript
vue-cli2.9.3 详细教程
Apr 23 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
May 28 Javascript
快速解决Vue项目在IE浏览器中显示空白的问题
Sep 04 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
linux环境apache多端口配置虚拟主机的方法深入介绍
2013/06/09 PHP
显示程序执行时间php函数代码
2013/08/29 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
PHP通过文件保存和更新信息的方法分析
2019/09/12 PHP
用javascript实现自定义标签
2007/05/08 Javascript
基于jQuery的固定表格头部的代码(IE6,7,8测试通过)
2010/05/18 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
2012/06/20 Javascript
Js获取数组最大和最小值示例代码
2013/10/29 Javascript
jquery实现ajax提交form表单的方法总结
2014/03/03 Javascript
JavaScript学习笔记之内置对象
2015/01/22 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
Javascript核心读书有感之表达式和运算符
2015/02/11 Javascript
vue-router2.0 组件之间传参及获取动态参数的方法
2017/11/10 Javascript
JavaScrip关于创建常量的知识点
2017/12/07 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
js实现查询商品案例
2020/07/22 Javascript
Python类的基础入门知识
2008/11/24 Python
Python是编译运行的验证方法
2015/01/30 Python
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
2016/05/05 Python
python爬取基于m3u8协议的ts文件并合并
2019/04/26 Python
Python random库使用方法及异常处理方案
2020/03/02 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
台湾三立电视电商平台:电电购
2019/09/09 全球购物
销售高级职员求职信
2013/10/29 职场文书
宿舍违规检讨书
2014/01/12 职场文书
小学生学习雷锋倡议书
2014/05/15 职场文书
干部作风整顿个人剖析材料
2014/10/06 职场文书
党的群众路线教育实践活动总结大会主持词
2014/10/30 职场文书
说谎欺骗人检讨书300字
2014/11/18 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
2015小学音乐教师个人工作总结
2015/07/21 职场文书
2016年小学六一儿童节活动总结
2016/04/06 职场文书
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android