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 相关文章推荐
javascript 按回车键相应按钮提交事件
Nov 02 Javascript
用javascript判断IE版本号简单实用且向后兼容
Sep 11 Javascript
Jquery实现的tab效果可以指定默认显示第几页
Oct 16 Javascript
JS动态添加与删除select中的Option对象(示例代码)
Dec 25 Javascript
jquery取消选择select下拉框示例代码
Feb 22 Javascript
JS烟花背景效果实现方法
Mar 03 Javascript
Bootstrap模态框禁用空白处点击关闭
Oct 20 Javascript
jQuery居中元素scrollleft计算方法示例
Jan 16 Javascript
JS实现的全排列组合算法示例
Oct 09 Javascript
angular-tree-component的使用详解
Jul 30 Javascript
vue组件中watch props根据v-if动态判断并挂载DOM的问题
May 12 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
Sep 03 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/10/09 PHP
php 日期时间处理函数小结
2009/12/18 PHP
深入分析PHP优化及注意事项
2016/07/04 PHP
JS去除数组重复值的五种不同方法
2013/09/06 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
2014/01/23 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
JSP中使用JavaScript动态插入删除输入框实现代码
2014/06/13 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
微信小程序实现图片自适应(支持多图)
2017/01/25 Javascript
js仿淘宝商品放大预览功能
2017/03/15 Javascript
Bootstrap多级菜单的实现代码
2017/05/23 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
2017/05/24 jQuery
JS中的多态实例详解
2017/10/15 Javascript
Vue入门之animate过渡动画效果
2018/04/08 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
[04:10]DOTA2英雄梦之声_第11期_圣堂刺客
2014/06/21 DOTA
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
Python迭代器和生成器介绍
2015/03/06 Python
python编写的最短路径算法
2015/03/25 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
Python OpenCV之图片缩放的实现(cv2.resize)
2019/06/28 Python
python每天定时运行某程序代码
2019/08/16 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
利用python查看数组中的所有元素是否相同
2021/01/08 Python
详解CSS3中@media的实际使用
2015/08/04 HTML / CSS
检举信的格式及范文
2014/04/04 职场文书
创建青年文明号材料
2014/05/09 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
前端vue+express实现文件的上传下载示例
2022/02/18 Vue.js