Javascript实现动态菜单添加的实例代码


Posted in Javascript onJuly 05, 2013

先来看看效果:

Javascript实现动态菜单添加的实例代码

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的用法,所以就加上了。
Javascript 相关文章推荐
js取float型小数点后两位数的方法
Jan 18 Javascript
javascript实现类似超链接的效果
Dec 26 Javascript
基于jQuery实现文字打印动态效果
Apr 21 jQuery
使用JS在浏览器中判断当前网络连接状态的几种方法
May 05 Javascript
用angular实现多选按钮的全选与反选实例代码
May 23 Javascript
新手vue构建单页面应用实例代码
Sep 18 Javascript
vue几个常用跨域处理方式介绍
Feb 07 Javascript
在vue项目中引用Iview的方法
Sep 14 Javascript
详解angularjs跨页面传参遇到的一些问题
Nov 01 Javascript
ES6基础之数组和对象的拓展实例详解
Aug 22 Javascript
详解Vue后台管理系统开发日常总结(组件PageHeader)
Nov 01 Javascript
jQuery实现聊天对话框
Feb 08 jQuery
javascript实现跳转菜单的具体方法
Jul 05 #Javascript
JavaScript获取和设置CheckBox状态的简单方法
Jul 05 #Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
Jul 05 #Javascript
JS 精确统计网站访问量的实例代码
Jul 05 #Javascript
如何使用jQuery Draggable和Droppable实现拖拽功能
Jul 05 #Javascript
基于JavaScript 下namespace 功能的简单分析
Jul 05 #Javascript
javascript基础之查找元素的详细介绍(访问节点)
Jul 05 #Javascript
You might like
隐藏你的.php文件的实现方法
2007/03/19 PHP
PHP array_push 数组函数
2009/12/26 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
PHP下通过QRCode类库创建中间带网站LOGO的二维码
2014/07/12 PHP
ThinkPHP V2.2说明文档没有说明的那些事实例小结
2015/07/01 PHP
Yii2.0中的COOKIE和SESSION用法
2016/08/12 PHP
js控制框架刷新
2008/08/01 Javascript
javascript 一段左右两边随屏滚动的代码
2009/06/18 Javascript
基于jquery+thickbox仿校内登录注册框
2010/06/07 Javascript
JS对外部文件的加载及对IFRMAME的加载的实现,当加载完成后,指定指向方法(方法回调)
2011/07/04 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
javascript类型转换使用方法
2014/02/08 Javascript
认识Knockout及如何使用Knockout绑定上下文
2015/12/25 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
详解从angular-cli:1.0.0-beta.28.3升级到@angular/cli:1.0.0
2017/05/22 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
js+css实现打字效果
2020/06/24 Javascript
vue写h5页面的方法总结
2019/02/12 Javascript
vue中axios请求的封装实例代码
2019/03/23 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
OpenLayers3实现鼠标移动显示坐标
2020/09/25 Javascript
详解Python中的文本处理
2015/04/11 Python
Python selenium文件上传方法汇总
2020/11/19 Python
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
在PyCharm导航区中打开多个Project的关闭方法
2019/01/17 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
说出一些常用的类,包,接口
2014/09/22 面试题
离婚协议书范文2016
2016/03/18 职场文书
小学作文之描写天气
2019/08/15 职场文书
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL