Javascript实现动态菜单添加的实例代码
时间:2024-04-22 22:23:25
先来看看效果:
Html源码:
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>动态改变菜单</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="SelectMenu.js"></script>
</head>
<body>
<form action="#">
<br/>
<br/>
<br/>
<div class="Address">
<span class="Province">Province:
<select>
<option value="" selected="selected">Please Choose Province</option>
<option value="HeBei">HeBei</option>
<option value="ShanDong">ShanDong</option>
</select>
</span>
<span class="City" style="display:none">City:
<select>
</select>
</span>
<span class="Area" style="display:none">Area:
<select>
</select>
</span>
<br/>
<br/>
<span class="AddressSelect" style="display:none">
</span>
</div>
</form>
</body>
</html>
Javascript源码
$(document).ready(function () {
//找到三个下拉框
var ProvinceSelect = $(".Province").children("select");
var CitySelect = $(".City").children("select");
var AreaSelect = $(".Area").children("select");
var AddressSelect=$(".AddressSelect");
//给第二个下拉框注册事件
ProvinceSelect.change(function () {
//1、获取当前下拉框的值
var ProvinceValue = $(this).val();
//1.1只要第一个下拉框内容有变化,第三个下拉框就要隐藏起来
AreaSelect.parent().hide();
AddressSelect.hide();
AddressSelect.html("");
//2、如果值不为空,则显示城市下拉框
if (ProvinceValue != "") {
CitySelect.html("");
$("<option value=''>Please Choose City</option>").appendTo(CitySelect);
switch(ProvinceValue)
{
//实际项目中,这个城市数组肯定是在服务器获取的,这里为了简便,我就直接自定义了一个数组
//如果追求完美,这里还可以加一道缓存,防止重复获取
case "HeBei":
var CityOfHeBei=["ShiJiaZhuang","CangZhou","LangFang"];
for(var i=0;i<CityOfHeBei.length;i++){
$("<option value='"+CityOfHeBei[i]+"'>"+CityOfHeBei[i]+"</option>").appendTo(CitySelect);
}
break;
case "ShanDong":
var CityOfShanDon=["JiNan","DeZhou","QingDao"];
for(var i=0;i<CityOfShanDon.length;i++){
$("<option value='"+CityOfShanDon[i]+"'>"+CityOfShanDon[i]+"</option>").appendTo(CitySelect);
}
break;
}
CitySelect.parent().show();
} else {
CitySelect.parent().hide();
}
});
//给第二个下拉框注册事件
CitySelect.change(function () {
var CityValue = $(this).val();
AddressSelect.hide();
AreaSelect.parent().hide();
AddressSelect.html("");
if (CityValue != "") {
AreaSelect.html("");
$("<option value=''>Please Choose Area</option>").appendTo(AreaSelect);
switch(CityValue)
{
//实际项目中,这个区数组肯定是在服务器获取的,这里为了简便,我就直接自定义了一个数组
//如果追求完美,这里还可以加一道缓存,防止重复获取
case "ShiJiaZhuang":
var AreaOfCity=["GaoXinQu","KaiFaQu","XinHuaQu"];
for(var i=0;i<AreaOfCity.length;i++){
$("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect);
}
break;
case "CangZhou":
var AreaOfCity=["XinHuaQu","YunHeQu"];
for(var i=0;i<AreaOfCity.length;i++){
$("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect);
}
break;
case "LangFang":
var AreaOfCity=["AnCiQu","GuangYangQu"];
for(var i=0;i<AreaOfCity.length;i++){
$("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect);
}
break;
case "QingDao":
var AreaOfCity=["GaoXinQu","KaiFaQu","XinHuaQu"];
for(var i=0;i<AreaOfCity.length;i++){
$("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect);
}
break;
case "DeZhou":
var AreaOfCity=["XinHuaQu","YunHeQu"];
for(var i=0;i<AreaOfCity.length;i++){
$("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect);
}
break;
case "JiNan":
var AreaOfCity=["AnCiQu","GuangYangQu"];
for(var i=0;i<AreaOfCity.length;i++){
$("<option value='"+AreaOfCity[i]+"'>"+AreaOfCity[i]+"</option>").appendTo(AreaSelect);
}
break;
}
AreaSelect.parent().show();
} else {
AreaSelect.parent().hide();
}
});
AreaSelect.change(function(){
var AreaValue=$(this).val();
AddressSelect.html("");
if (AreaValue!=""){
$("<span>The Address Is --Province: "+ProvinceSelect.val()+" City: "+CitySelect.val()+" Area: "+AreaSelect.val()+"</span>").appendTo(AddressSelect);
AddressSelect.show();
//alert("The Address Is Province: "+ProvinceSelect.val()+" City: "+CitySelect.val()+" Area: "+AreaSelect.val());
}
})
});
这里还引用了Jquery,貌似实现这个效果,用不用都无所谓,最近为了熟悉Jquery的用法,所以就加上了。
标签:动态,菜单,添加
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
CSS解决未知高度的垂直水平居中自适应问题
2009-03-17 17:06:00
TensorFlow设置日志级别的几种方式小结
2023-07-30 07:57:42
![](https://img.aspxhome.com/file/2023/6/108126_0s.jpg)
100%全屏布局设计
2009-05-15 12:24:00
关于python中map函数的使用
2022-10-30 22:43:16
Python实现向QQ群成员自动发邮件的方法
2021-08-16 13:41:33
Python headers请求头如何实现快速添加
2023-04-11 15:24:26
![](https://img.aspxhome.com/file/2023/1/133271_0s.png)
Python爬虫使用脚本登录Github并查看信息
2022-05-02 13:09:28
![](https://img.aspxhome.com/file/2023/9/83899_0s.png)
Python和php通信乱码问题解决方法
2023-03-04 14:50:43
table 行转列的sql详解
2024-01-27 00:44:57
Vue不同项目之间传递、接收参数问题
2024-04-30 10:47:06
![](https://img.aspxhome.com/file/2023/6/130046_0s.png)
Python聊天室实例程序分享
2021-01-14 15:35:42
![](https://img.aspxhome.com/file/2023/3/133323_0s.gif)
go语言yaml转map、map遍历的实现
2024-05-25 15:19:52
如何列出SQL数据库中的存储过程?
2010-01-12 19:58:00
python 生成正态分布数据,并绘图和解析
2022-02-11 07:14:00
![](https://img.aspxhome.com/file/2023/0/118760_0s.png)
python连接mysql有哪些方法
2024-01-21 11:23:11
[翻译]标记语言和样式手册 chapter 6 短语元素
2008-01-25 16:37:00
![](https://img.aspxhome.com/file/UploadPic/20081/25/200812517182403s.jpg)
微信小程序实现上传图片小功能
2024-04-26 17:11:56
![](https://img.aspxhome.com/file/2023/4/135634_0s.jpg)
跟老齐学Python之再深点,更懂list
2021-02-05 21:44:18
通过Fckeditor把图片上传到独立图片服务器的方法
2023-11-06 20:02:24
分享8 个常用pandas的 index设置
2023-10-24 14:22:13
![](https://img.aspxhome.com/file/2023/6/69426_0s.png)