JavaScript结合HTML DOM实现联动菜单

yizhihongxing

一、前言

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日

相关文章

  • 微信小程序保持session会话的方法

    下面我将为你详细介绍微信小程序保持 session 会话的方法。 什么是 session session 是指客户端和服务器之间的交互状态,可以理解为身份验证或登录状态的一种维持方式。常见的维持 session 的方法有 cookie 和 token。 微信小程序 session 微信小程序中,可以通过 wx.request 方法向服务器发送请求并维持 se…

    JavaScript 2023年6月11日
    00
  • JavaScript关联数组用法分析【概念、定义、遍历】

    JavaScript关联数组用法分析【概念、定义、遍历】 概念 关联数组是一种用于JavaScript对象的特殊类型。在关联数组中,每个元素都可以被分配一个唯一的键或名称。相比于普通数组,关联数组键值对的输入和查找更加灵活。 定义 在JavaScript中,我们可以通过两种方式来定义关联数组,分别是使用对象字面量和使用数组的方括号方法。 使用对象字面量 co…

    JavaScript 2023年5月27日
    00
  • JavaScript中常见加密解密方法总结

    JavaScript中常见加密解密方法总结 在前端开发中,加密和解密是常用的技术手段之一,它们可以保证前端传递的数据安全性。本文将介绍一些常见的JavaScript加密和解密方法。 Base64编码解码 Base64编码是将二进制数据转化为纯文本的一种编码方式。在前端传递数据时,常常需要对敏感信息进行编码,以保证数据的安全。 以下是一个简单的示例,演示如何使…

    JavaScript 2023年5月19日
    00
  • json数据处理及数据绑定

    下面是关于”json数据处理及数据绑定”的完整攻略。 什么是JSON数据? JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript语言对象的表示法,但是独立于JavaScript并且易于理解和使用。JSON格式常用于前端开发中,用于数据传输和存储,是一种常用的数据格式。 JSON格式的数据包含键…

    JavaScript 2023年5月27日
    00
  • 脚本收藏iframe

    下面是“脚本收藏iframe”的完整攻略: 1. 什么是脚本收藏iframe 脚本收藏iframe即是通过一个特定的网站,将一些常用或比较重要的javascript脚本进行收藏和管理,并用一个iframe嵌入到自己的网页中,以便后续调用,从而达到提高网页开发效率的目的。 2. 开始使用脚本收藏iframe 要使用脚本收藏iframe,我们需要遵循以下步骤: …

    JavaScript 2023年6月11日
    00
  • JS传值出现中文参数乱码的解决方法

    JS传值出现中文参数乱码的解决方法 当我们在JS中传递参数中包含中文时,有时会出现乱码的问题。这篇攻略将介绍如何解决这个问题。 方法一:使用encodeURIComponent()和decodeURIComponent() 通过使用JavaScript内置的encodeURIComponent()函数对字符串进行编码,再通过decodeURIComponen…

    JavaScript 2023年5月19日
    00
  • Vue nextTick的原理解析

    Vue.js中的nextTick方法是一个非常有用又有些神秘的工具。其背后的原理和使用方式值得我们深入探究和理解,使我们能够更好地使用Vue.js,写出更加优秀的代码。 什么是nextTick? 在Vue.js中,当我们修改了一个数据后,DOM并不会立刻更新。相反,Vue.js会在内部异步的更新DOM。这种异步更新意味着我们不能马上获取到更新后的DOM,这对…

    JavaScript 2023年6月11日
    00
  • JavaScript适配器模式原理与用法实例详解

    JavaScript适配器模式原理与用法实例详解 适配器模式基本概念 适配器模式是一种结构型设计模式,在现实生活中也经常出现。例如旅游适配器,通过把不同国家的电源插头转换成自己国家的电源插头来实现电器的兼容。 在JavaScript中,适配器模式的应用场景也很广泛,主要用于处理一些不兼容的接口或函数调用,,只要是两个或多个对象之间接口不兼容的情况都可以使用适…

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