js 联动下拉菜单
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>js 联动下拉菜单</title>
<script>
window.onload=function()
{
var s1=new Sel('div1');
// 数据
s1.add('0',['1','2','3']);
s1.add('0_0',['1_1','1_2','1_3']);
s1.add('0_0_0',['1_1_1','1_1_2','1_1_3']);
s1.add('0_0_1',['1_2_1','1_2_2','1_2_3']);
s1.add('0_0_2',['1_3_1','1_3_2','1_3_3']);
s1.add('0_1',['2_1','2_2','2_3']);
s1.add('0_1_0',['2_1_1','2_1_2','2_1_3']);
s1.add('0_1_1',['2_2_1','2_2_2','2_2_3']);
s1.add('0_1_2',['2_3_1','2_3_2','2_3_3']);
s1.add('0_2',['3_1','3_2','3_3']);
s1.add('0_2_0',['3_1_1','3_1_2','3_1_3']);
s1.add('0_2_1',['3_2_1','3_2_2','3_2_3']);
s1.add('0_2_2',['3_3_1','3_3_2','3_3_3']);
s1.init(3); // 几个下拉框
}
function Sel(id)
{
this.oParent=document.getElementById(id); //选择容器
this.data={}; // 存放数据
this.aSel=this.oParent.getElementsByTagName('select'); // 创建容器中的 select 下拉框
}
Sel.prototype=
{
init:function(num)
{
var This=this;
for(var i=1;i<=num;i++)
{
var oSel=document.createElement('select');
var opt=document.createElement('option');
opt.innerHTML='默认'; // 每个下拉框的初始值
oSel.appendChild(opt); // 每个下拉框的初始元素
oSel.index=i; //1,2,3
this.oParent.appendChild(oSel); // 添加初始元素
oSel.onchange=function() // 当下拉框改变的时候
{
This.change(this.index);
}
}
this.first();//创建第一个
},//初始化对象
add:function(key,val)
{
this.data[key]=val;
},//添加数据
first:function()
{
var arr=this.data['0'];
for(var i=0;i<arr.length;i++)
{
var opt=document.createElement('option');
opt.innerHTML=arr[i];
this.aSel[0].appendChild(opt);
}
},//创建第一个下拉菜单----元素添加数据
change:function(now)
{
var str='0';
for(i=0;i<now;i++) //now====0,1,2 如果now=0,循环时str=0_0
{
str+='_'+(this.aSel[i].selectedIndex-1);
//取得当前选中元素的下一级的数据
}
if(this.data[str]) //如果有数据
{
var arr=this.data[str];
this.aSel[now].options.length=1;
for(var i=0;i<arr.length;i++)
{
var opt=document.createElement('option');
opt.innerHTML=arr[i];
this.aSel[now].appendChild(opt);
} // -------------------------------添加数据
this.aSel[now].options[1].selected=true;
now++;
if(now<this.aSel.length)
{
this.change(now); // 更新下级
}
}
else
{
for(var i=now;i<this.aSel.length;i++)
{
this.aSel[i].options.length=1;
}// 返回默认值
}
}, // -------------------------change 结束
}
</script>
</head>
<body>
<div id="div1"></div>
</body>
</html>
js 联动下拉菜单的更多相关文章
- jQuery cxSelect 多级联动下拉菜单
随着电商热门,这种多层次的互动更充分地体现在下拉菜单,最明显的是多级联动地址下拉选择,因此,这里是一个简单的分享 jQuery cxSelect 多级联动下拉菜单 cxSelect 它是基于 jQue ...
- (实用篇)jQuery+PHP+MySQL实现二级联动下拉菜单
二级联动下拉菜单选择应用在在很多地方,比如说省市下拉联动,商品大小类下拉选择联动.本文将通过实例讲解使用jQuery+PHP+MySQL来实现大小分类二级下拉联动效果. 先看下效果 大类: 前端技术 ...
- 纯css和js版下拉菜单
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- js版本下拉菜单
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- JS实现下拉菜单的功能
<!DOCTYPE html> <html> <head> <meta charset = "utf8"> <title> ...
- php+ajax的三级联动下拉菜单
封装一个三级联动,就可以在任何页面进行引用了 先写个页面引用一下这个js <head> <meta http-equiv="Content-Type" conte ...
- ajax三级联动下拉菜单
ajax写三级联动,先写一个文件类吧,以后用的时候直接调用即可: 来找一张表: 实现: 中国地域的三级联动:省.市.区: 图: 说一下思路: (1)当用户选择省份的时候触发事件,把当前的省份的id通过 ...
- 2016/3/24 ①数据库与php连接 三种输出fetch_row()、fetch_all()、fetch_assoc() ②增删改时判断(布尔型) ③表与表之间的联动 ④下拉菜单 ⑤登陆 三个页面
①数据库与php连接 图表 header("content-type:text/html;charset=utf-8"); //第一种方式: //1,生成连接,连接到数据库上的 ...
- js模拟下拉菜单-键盘、鼠标(代码详解)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- XMPP 客户端和服务端
GPLv2授权不能商用 XMPP协议的客户端软件列表 http://zh.wikipedia.org/wiki/XMPP%E5%8D%94%E8%AD%B0%E7%9A%84%E5%AE%A2%E6% ...
- AndroidStudio 中使用FFMPEG
1.下载 FFmpeg 源码 git clone https://git.ffmpeg.org/ffmpeg.git 这一步可能会花比较长的时间 2.编译 FFmpeg for Android 2.1 ...
- Markdown简要规则
We believe that writing is about content, about what you want to say – not about fancy formatting. 我 ...
- C程序设计语言(K&R) 笔记2
(1) #include <stdio.h> main(){ int c; while((c = getchar()) != EOF){ putchar(c); } } 注意,因为 != ...
- 每天一道算法题(24)——自定义幂函数pow
double myPower(double base, int exponent){ if(exponent==0) return 1; if(exponent==1) return base; if ...
- 去除Activity上面的标题边框
实现方法:1.在代码中实现:在此方法setContentView(R.layout.main)之前加入:requestWindowFeature(Window.FEATURE_NO_TITLE);标题 ...
- [转]SQL 模糊查询
在进行数据库查询时,有完整查询和模糊查询之分. 一般模糊查询语句如下: SELECT 字段 FROM 表 WHERE 某字段 Like 条件 其中关于条件,SQL提供了四种匹配模式: 1,% :表 ...
- 算法Sedgewick第四版-第1章基础-2.1Elementary Sortss-002插入排序法(Insertion sort)
一.介绍 1.时间和空间复杂度 运行过程 2.特点: (1)对于已排序或接近排好的数据,速度很快 (2)对于部分排好序的输入,速度快 二.代码 package algorithms.elementar ...
- 算法Sedgewick第四版-第1章基础-003一封装日期
1. package ADT; import algorithms.util.StdOut; /**************************************************** ...
- Linux系统命令Top/free的使用及参数详解
1.作用 top命令用来显示执行中的程序进程,使用权限是所有用户. 2.格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 3.主要参数 d:指定更新的间隔,以秒 ...