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日

相关文章

  • JavaScript面试中常考的字符串操作方法大全(包含ES6)

    JavaScript面试中常考的字符串操作方法大全(包含ES6) 1. 字符串长度 获取字符串长度可以使用length属性,例如: const str = ‘Hello World’; console.log(str.length); // 11 2. 字符串索引 可以使用方括号([])来访问字符串中的单个字符,例如: const str = ‘Hello …

    JavaScript 2023年5月28日
    00
  • js实现最短的XML格式化工具实例

    下面是“js实现最短的XML格式化工具实例”的攻略。 1. 目标 我们的目标是实现一个最短的XML格式化工具,输入一段XML字符串,输出格式化后的XML字符串。 2. 思路 我们要实现的XML格式化工具需要满足以下几个要求: 保留XML中的所有节点和属性; 将XML字符串按照缩进格式化输出。 我们可以通过解析XML字符串,将XML字符串转换为JavaScri…

    JavaScript 2023年5月27日
    00
  • JavaScript使用encodeURI()和decodeURI()获取字符串值的方法

    JavaScript使用encodeURI()和decodeURI()获取字符串值的方法 在JavaScript中,有时候需要将字符串数据转换成URI格式,或者从URI格式中获取字符串数据。这时候可以使用encodeURI()和decodeURI()方法来完成转换。 encodeURI() encodeURI()方法将字符串数据作为URI进行编码,其中一些字…

    JavaScript 2023年5月19日
    00
  • js中作用域的实例解析

    JS中作用域的实例解析 在JavaScript中,作用域(Scope)是指访问变量、函数等标识符的范围。JavaScript的作用域基于函数(Function)而非块级作用域(Block Scope),这意味着变量的作用域在代码块 {} 中没有意义,而是在它们所在的函数中定义的。本篇攻略将通过实例来详细讲解JS中作用域的概念。 一、全局作用域 全局作用域(G…

    JavaScript 2023年6月10日
    00
  • js局部刷新页面时间具体实现

    实现JS局部刷新页面的两种常见方式是使用JS内置的location.reload()方法和使用AJAX请求后台返回的数据来更新页面。 使用location.reload()方法刷新页面 location.reload()方法可以重新加载当前页面,如果传入参数true则会强制从服务器重新加载页面,但是这种方式会刷新整个页面,无法局部刷新。因此,我们可以通过在J…

    JavaScript 2023年5月27日
    00
  • js 如何删除对象里的某个属性

    下面是关于“如何删除 JavaScript 对象里的某个属性”的完整攻略。 删除属性的方法 JavaScript 对象的属性可以通过 delete 运算符来删除。其基本语法如下: delete objectName.propertyName; 其中,objectName 为对象名称,propertyName 表示要删除的属性名称。 删除数组元素 由于 Jav…

    JavaScript 2023年5月27日
    00
  • JS实现的走迷宫小游戏完整实例

    下面是“JS实现的走迷宫小游戏完整实例”的完整攻略: 1.准备工作 1.1 HTML结构 在HTML中使用一个canvas元素来绘制迷宫,并使用一个button元素来触发游戏。示例代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g…

    JavaScript 2023年5月28日
    00
  • js实现一个逐步递增的数字动画

    JS实现逐步递增数字动画的完整攻略示例: 步骤一: HTML结构首先,我们需要在HTML中创建一个目标容器来显示数字动画的值,如 ,这是一个示例结构,可以根据实际情况进行修改。 步骤二: CSS样式可以根据自己的需求进行样式设计,这里建议将目标容器与数字本身分离,用一个样式来设置它们的样式。如: .num { font-size: 40px; color: …

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