JavaScript结合HTML DOM实现联动菜单

一、前言

JavaScript结合HTML DOM可实现动态操作HTML文档的功能,通常用于创建富交互网页。本文将讲解如何使用JavaScript结合HTML DOM实现联动菜单。

二、准备工作

在使用JavaScript结合HTML DOM实现联动菜单前,需准备如下工作:

  1. 编写HTML代码,包含两个或以上select控件,其中一个为主控控件,另外的为从属控件;
  2. 在HTML代码中设置script标签,用于书写JavaScript代码;
  3. 在CSS样式表中设置控件样式;
  4. 编写JavaScript代码,实现控件联动效果。

三、示例1

下面是一个简单的示例,此示例包含两个select控件:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>联动菜单</title>
    <style>
        select{
            width: 200px;
            height: 30px;
        }
    </style>
</head>
<body>
    <select id="first" onchange="change()">
        <option value="1">苹果</option>
        <option value="2">小米</option>
        <option value="3">华为</option>
    </select>

    <select id="second">
        <option value="1">iPhone</option>
        <option value="1">iPad</option>
        <option value="2">Redmi</option>
        <option value="2">小米电视</option>
        <option value="3">P40</option>
        <option value="3">Mate 40 Pro</option>
    </select>

    <script>
        function change(){
            var firstValue=document.getElementById("first").value;
            var second=document.getElementById("second"); 
            second.length=0;
            if(firstValue=="1"){
                var option1=new Option("iPhone","1");
                var option2=new Option("iPad","2");
                second.options.add(option1);
                second.options.add(option2);
            }else if(firstValue=="2"){
                var option1=new Option("Redmi","1");
                var option2=new Option("小米电视","2");
                second.options.add(option1);
                second.options.add(option2);
            }else if(firstValue=="3"){
                var option1=new Option("P40","1");
                var option2=new Option("Mate 40 Pro","2");
                second.options.add(option1);
                second.options.add(option2);
            }
        }
    </script>
</body>
</html>

首先,我们需要编写两个select控件,一个为主控控件(id为first),另一个为从属控件(id为second),并设置主控控件的onchange事件,调用change函数。

在change函数中,我们通过document.getElementById方法获取主控控件的值,并根据不同的值生成对应的option元素。然后,我们通过second.options.add方法将option元素添加到从属控件中。

四、示例2

下面是另一个示例,此示例包含三个select控件:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>联动菜单</title>
    <style>
        select{
            width: 200px;
            height: 30px;
        }
    </style>
</head>
<body>
    <select id="province" onchange="changeProvince()">
        <option value="">请选择</option>
        <option value="上海市">上海市</option>
        <option value="浙江省">浙江省</option>
        <option value="江苏省">江苏省</option>
    </select>

    <select id="city" onchange="changeCity()">
        <option value="">请选择</option>
    </select>

    <select id="district">
        <option value="">请选择</option>
    </select>

    <script>
        var cityData={
            "浙江省":["杭州市","宁波市","温州市"],
            "江苏省":["南京市","苏州市","镇江市"],
            "上海市":["黄浦区","徐汇区","长宁区"]
        };
        var districtData={
            "杭州市":["西湖区","拱墅区","下城区"],
            "宁波市":["海曙区","江东区","江北区"],
            "温州市":["鹿城区","龙湾区","瓯海区"],
            "南京市":["玄武区","白下区","建邺区"],
            "苏州市":["姑苏区","吴中区","相城区"],
            "镇江市":["京口区","润州区","丹徒区"],
            "黄浦区":["外滩","南京路","董家渡"],
            "徐汇区":["漕河泾","斜土路","上海南站"],
            "长宁区":["仙霞新村","虹桥店","北新泾"]
        };
        function changeProvince(){
            var provinceValue=document.getElementById("province").value;
            var city=document.getElementById("city"); 
            city.length=0;
            var district=document.getElementById("district"); 
            district.length=0;
            if(provinceValue!=""){
                for(var i=0;i<cityData[provinceValue].length;i++){
                    var option=new Option(cityData[provinceValue][i],cityData[provinceValue][i]);
                    city.options.add(option);
                }
            }else{
                var option=new Option("请选择","");
                city.options.add(option);
                district.options.add(option);
            }
        }
        function changeCity(){
            var provinceValue=document.getElementById("province").value;
            var cityValue=document.getElementById("city").value;
            var district=document.getElementById("district"); 
            district.length=0;
            if(cityValue!=""){
                for(var i=0;i<districtData[cityValue].length;i++){
                    var option=new Option(districtData[cityValue][i],districtData[cityValue][i]);
                    district.options.add(option);
                }
            }else{
                var option=new Option("请选择","");
                district.options.add(option);
            }
        }
    </script>
</body>
</html>

首先,我们需要编写三个select控件,分别为省份控件(id为province)、城市控件(id为city)和区县控件(id为district)。

然后,我们需要编写一个cityData数组和一个districtData数组,用来存储城市和区县数据。

在changeProvince函数中,我们通过document.getElementById方法获取省份控件的值,并根据不同的值生成对应的option元素。然后,我们通过city.options.add方法将option元素添加到城市控件中。

在changeCity函数中,我们通过document.getElementById方法获取城市控件的值,并根据不同的值生成对应的option元素。然后,我们通过district.options.add方法将option元素添加到区县控件中。

五、总结

通过使用JavaScript结合HTML DOM实现联动菜单,我们可以轻松地实现复杂的数据筛选和显示功能。在实现过程中,我们需要注意控件样式的调整和JavaScript代码的书写,同时,建议对控件数据进行预处理,以提高代码的可读性和可维护性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript结合HTML DOM实现联动菜单 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • Jsonp post 跨域方案

    下面我将详细讲解 Jsonp post 跨域方案的完整攻略。 什么是 Jsonp post 跨域方案? 在前端开发中,常常会遇到需要跨越多个域名进行数据交互的问题,而出于安全考虑,浏览器出于安全策略的限制,不允许通过 ajax 请求访问跨域资源,这时可以采用 Jsonp post 跨域方案来实现数据交互。 Jsonp 是一种通过动态创建 script 标签跨…

    JavaScript 2023年5月27日
    00
  • 详解JavaScript中var和let的区别

    详解JavaScript中var和let的区别 1. var的作用域 在ES5及其之前的版本中,我们通常使用var声明变量。在使用var声明变量时,需要注意变量的作用域。 全局作用域 当在函数外使用var声明变量时,该变量为全局变量,即便在函数内部使用,它也可以被访问到。例如: var a = 1; function test() { console.log…

    JavaScript 2023年6月10日
    00
  • 基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标

    当我们需要在网站上显示特定区域的地图界面时,我们需要提取地图的行政区边界的经纬度坐标。在本文中,我们将使用JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标。 准备工作 在开始之前,我们需要在相应的地图开发平台上注册账号并获取相应的API Key。对于高德地图,可以在高德地图开放平台上注册并获取Key;对于百度地图,可以在百度地图开放平台上注…

    JavaScript 2023年6月11日
    00
  • 详解JS WebSocket断开原因和心跳机制

    详解JS WebSocket断开原因和心跳机制 WebSocket 是一个重要的协议,可在浏览器和服务器之间双向通信,且具有较低的延迟和较高的带宽利用率。但是,在实际应用中,WebSocket 经常会由于各种原因而断开连接,为此,我们需要对 WebSocket 的断开原因和心跳机制做详细了解。 WebSocket断开原因 1. 服务器主动关闭 服务器端主动关…

    JavaScript 2023年5月28日
    00
  • javascript 基础篇1 什么是js 建立第一个js程序

    我来分享一下 “JavaScript 基础篇1:什么是 JavaScript?建立第一个 JavaScript 程序” 的完整攻略。 什么是 JavaScript? JavaScript 是一种高级编程语言,用于创建交互式网页和网页应用程序。它是一种脚本语言,意味着你不需要为了编写代码而拥有庞大的开发环境。 JavaScript 非常流行,现在可以在几乎所有…

    JavaScript 2023年5月27日
    00
  • 在JavaScript中对HTML进行反转义详解

    在JavaScript中,将HTML内容插入到页面上时,有时需要对HTML进行转义,以防止其中包含的特殊字符污染页面结构或导致安全隐患。而有时候,我们需要对已经进行了转义的HTML内容进行反转义,重新获得原始HTML内容。接下来,我将为大家详细讲解在JavaScript中对HTML进行反转义的完整攻略。 什么是HTML转义? HTML转义指的是将HTML标签…

    JavaScript 2023年5月19日
    00
  • js实现会跳动的日历效果(完整实例)

    下面我将详细讲解JS实现会跳动的日历效果的完整攻略。 简介 这是一个使用JavaScript实现会跳动的日历效果的完整示例。该例子展示了如何使用JavaScript和基本的HTML/CSS构建起一个会跳动的日历效果。 步骤 HTML结构 首先我们需要构建页面的HTML结构,代码如下: <!DOCTYPE html> <html> &l…

    JavaScript 2023年5月27日
    00
  • 从原生JavaScript到React深入理解

    从原生JavaScript到React深入理解攻略 React是现在前端开发中非常流行的一种框架,很多前端工程师都想学习这个框架。但是,如果你没有掌握原生JavaScript的基础,就很难对React有深入理解。因此,我们需要先从原生JavaScript入手,然后逐渐深入学习React。 1. 学习原生JavaScript 1.1 理解DOM DOM是Doc…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部