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 相关文章推荐
event.X和event.clientX的区别分析
Oct 06 Javascript
JS模拟自动点击的简单实例
Aug 08 Javascript
jquery ajax 调用失败的原因示例介绍
Sep 27 Javascript
Jquery通过Ajax访问XML数据的小例子
Nov 18 Javascript
AngularJS中watch监听用法分析
Nov 04 Javascript
AngularJS页面传参的5种方式
Apr 01 Javascript
jquery+css实现简单的图片轮播效果
Aug 07 jQuery
Javascript 编码约定(编码规范)
Mar 11 Javascript
js array数组对象操作方法汇总
Mar 18 Javascript
BootstrapValidator验证用户名已存在(ajax)
Nov 08 Javascript
Vuex实现数据增加和删除功能
Nov 11 Javascript
npm qs模块使用详解
Feb 07 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
Zend的AutoLoad机制介绍
2012/09/27 PHP
PHP 转义使用详解
2013/07/15 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
PHP IDE phpstorm 常用快捷键
2015/05/18 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
JavaScript获取页面上某个元素的代码
2011/03/13 Javascript
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
jQuery动画效果-fadeIn fadeOut淡入浅出示例代码
2013/08/28 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
2014/07/02 Javascript
Javascript闭包实例详解
2015/11/29 Javascript
学习JavaScript事件流和事件处理程序
2016/01/25 Javascript
在web中js实现类似excel的表格控件
2016/09/01 Javascript
利用Query+bootstrap和js两种方式实现日期选择器
2017/01/10 Javascript
js实现手机web图片左右滑动效果
2017/12/29 Javascript
利用nodeJs anywhere搭建本地服务器环境的方法
2018/05/12 NodeJs
AngularJS实现的base64编码与解码功能示例
2018/05/17 Javascript
Nodejs处理异常操作示例
2018/12/25 NodeJs
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
Python字符串拼接、截取及替换方法总结分析
2016/04/13 Python
ubuntu中配置pyqt4环境教程
2017/12/27 Python
详解基于django实现的webssh简单例子
2018/07/17 Python
python多线程与多进程及其区别详解
2019/08/08 Python
详解python中GPU版本的opencv常用方法介绍
2020/07/24 Python
Python之字典添加元素的几种方法
2020/09/30 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
巴西家用小家电购物网站:Polishop
2016/08/07 全球购物
意大利制造的男鞋和女鞋:SCAROSSO
2018/03/07 全球购物
捷克街头、运动和滑板一站式商店:BoardStar.cz
2019/10/06 全球购物
估算杭州有多少软件工程师
2015/08/11 面试题
开学季活动策划方案
2014/02/28 职场文书
个人考核材料
2014/05/15 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
了解MySQL查询语句执行过程(5大组件)
2022/08/14 MySQL