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 call和apply方法
Nov 24 Javascript
jQuery回车实现登录简单实现
Aug 20 Javascript
JavaScript判断密码强度(自写代码)
Sep 06 Javascript
分享Javascript中最常用的55个经典小技巧
Nov 29 Javascript
为指定的元素添加遮罩层的示例代码
Jan 15 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
Jun 01 Javascript
BootStrap入门学习第一篇
Aug 28 Javascript
vue.js element-ui validate中代码不执行问题解决方法
Dec 18 Javascript
JavaScript字符串转数字的5种方法及遇到的坑
Jul 16 Javascript
微信小程序中this.data与this.setData的区别详解
Sep 17 Javascript
vue prop属性传值与传引用示例
Nov 13 Javascript
JS+CSS实现过渡特效
Jan 02 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学习笔记之一
2011/01/17 PHP
浅谈Laravel核心解读之Console内核
2018/12/02 PHP
Gambit vs CL BO3 第一场 2.13
2021/03/10 DOTA
jquery 表单进行客户端验证demo
2009/08/24 Javascript
深入认识javascript中的eval函数
2009/11/02 Javascript
Javascript 变量作用域 两个可能会被忽略的小特性
2010/03/23 Javascript
JS禁用浏览器退格键实现思路及代码
2013/10/29 Javascript
js 3种归并操作的实例代码
2013/10/30 Javascript
javascript定义变量时带var与不带var的区别分析
2015/01/12 Javascript
JavaScript蒙板(model)功能的简单实现代码
2016/08/04 Javascript
JS实现DOM删除节点操作示例
2018/04/04 Javascript
vue axios整合使用全攻略
2018/05/24 Javascript
nuxt中使用路由守卫的方法步骤
2019/01/27 Javascript
微信小程序scroll-view隐藏滚动条的方法详解
2020/03/25 Javascript
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
python学生信息管理系统(完整版)
2020/04/05 Python
基于Python的PIL库学习详解
2019/05/10 Python
使用python批量修改文件名的方法(视频合并时)
2020/03/24 Python
Python学习笔记之字符串和字符串方法实例详解
2019/08/22 Python
python SVD压缩图像的实现代码
2019/11/05 Python
python从zip中删除指定后缀文件(推荐)
2019/12/05 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
PyCharm+Miniconda3安装配置教程详解
2021/02/16 Python
澳大利亚的奢侈品牌:Oroton
2016/08/26 全球购物
CHRONEXT英国:您的首选奢华腕表目的地
2020/03/30 全球购物
SQL Server数据库笔试题和答案
2016/02/04 面试题
汽车销售求职自荐信
2013/10/01 职场文书
秘书英文求职信
2014/04/16 职场文书
党政领导班子民主生活会整改措施
2014/09/18 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
乡镇干部个人对照检查材料思想汇报(原创篇)
2014/09/28 职场文书
2015年新农村建设工作总结
2015/05/22 职场文书
培训计划通知
2015/07/15 职场文书
分享一些Java的常用工具
2021/06/11 Java/Android
Java线程的6种状态与生命周期
2022/05/11 Java/Android