一个最简单的级联下拉菜单

下面是一个最简单的级联下拉菜单的制作攻略:

一、确定数据结构

首先需要确定级联下拉菜单的数据结构。通常使用 JSON 格式存储。一个简单的数据结构示例如下:

{
  "中国": {
    "广东": ["广州", "深圳", "东莞"],
    "北京": ["朝阳区", "海淀区", "丰台区"],
    "上海": ["浦东新区", "徐汇区", "长宁区"]
  },
  "美国": {
    "纽约": ["曼哈顿", "布鲁克林"],
    "加州": ["旧金山", "洛杉矶"],
    "德州": ["达拉斯", "休斯顿"]
  },
  "日本": {
    "东京": ["千代田区", "中央区"],
    "大阪": ["梅田", "心斋桥"],
    "北海道": ["札幌市", "旭川市"]
  }
}

二、创建 HTML 结构

创建基本的 HTML 结构,并为每个下拉菜单添加对应的 id。

<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>级联下拉菜单</title>
</head>
<body>

<select id="province"><option>请选择省份</option></select>

<select id="city"><option>请选择城市</option></select>

<select id="area"><option>请选择地区</option></select>

<script src="app.js"></script>

</body>
</html>

三、编写 JavaScript 代码

编写 JavaScript 代码,根据选中的省份,自动刷新城市和地区选项。以下是一个简单的代码示例:

const data = {
  "中国": {
    "广东": ["广州", "深圳", "东莞"],
    "北京": ["朝阳区", "海淀区", "丰台区"],
    "上海": ["浦东新区", "徐汇区", "长宁区"]
  },
  "美国": {
    "纽约": ["曼哈顿", "布鲁克林"],
    "加州": ["旧金山", "洛杉矶"],
    "德州": ["达拉斯", "休斯顿"]
  },
  "日本": {
    "东京": ["千代田区", "中央区"],
    "大阪": ["梅田", "心斋桥"],
    "北海道": ["札幌市", "旭川市"]
  }
};

const province = document.getElementById('province');
const city = document.getElementById('city');
const area = document.getElementById('area');

function refreshCity() {
  const selectedProvince = province.value;
  const cities = data[selectedProvince];
  city.innerHTML = '<option>请选择城市</option>';
  area.innerHTML = '<option>请选择地区</option>';
  Object.keys(cities).forEach(function (k) {
    const option = document.createElement('option');
    option.text = k;
    city.add(option);
  });
}

function refreshArea() {
  const selectedProvince = province.value;
  const selectedCity = city.value;
  const areas = data[selectedProvince][selectedCity];
  area.innerHTML = '<option>请选择地区</option>';
  areas.forEach(function (k) {
    const option = document.createElement('option');
    option.text = k;
    area.add(option);
  });
}

province.addEventListener('change', function () {
  refreshCity();
});

city.addEventListener('change', function () {
  refreshArea();
});

在这段代码中,我们首先获取了三个下拉菜单的元素,并定义了两个刷新菜单的函数 refreshCityrefreshArea。当省份下拉菜单的值改变时,通过 refreshCity 函数刷新城市下拉菜单的选项。当城市下拉菜单的值改变时,通过 refreshArea 函数刷新地区下拉菜单的选项。

值得注意的是,在 refreshCity 函数中我们使用了 Object.keys()forEach() 函数遍历城市列表,并为每个城市创建一个选项添加到城市下拉菜单中。在 refreshArea 函数中,我们则直接遍历了地区列表,并和城市下拉选项的方式相同地添加了地区选项。

四、示例说明

以下是一个简单的例子,该例子展示了在中国、美国、日本三个国家中选择不同的省份、城市和地区。根据用户的选择,城市和地区的选项会自动刷新。

{
  "中国": {
    "广东": ["广州", "深圳", "东莞"],
    "北京": ["朝阳区", "海淀区", "丰台区"],
    "上海": ["浦东新区", "徐汇区", "长宁区"]
  },
  "美国": {
    "纽约": ["曼哈顿", "布鲁克林"],
    "加州": ["旧金山", "洛杉矶"],
    "德州": ["达拉斯", "休斯顿"]
  },
  "日本": {
    "东京": ["千代田区", "中央区"],
    "大阪": ["梅田", "心斋桥"],
    "北海道": ["札幌市", "旭川市"]
  }
}
<!DOCTYPE html>
<html>
<head>
  <meta charset="UTF-8">
  <title>级联下拉菜单示例</title>
</head>
<body>

<select id="province"><option>请选择国家</option></select>

<select id="city"><option>请选择省份</option></select>

<select id="area"><option>请选择城市</option></select>

<script>
const data = {
  "中国": {
    "广东": ["广州", "深圳", "东莞"],
    "北京": ["朝阳区", "海淀区", "丰台区"],
    "上海": ["浦东新区", "徐汇区", "长宁区"]
  },
  "美国": {
    "纽约": ["曼哈顿", "布鲁克林"],
    "加州": ["旧金山", "洛杉矶"],
    "德州": ["达拉斯", "休斯顿"]
  },
  "日本": {
    "东京": ["千代田区", "中央区"],
    "大阪": ["梅田", "心斋桥"],
    "北海道": ["札幌市", "旭川市"]
  }
};

const province = document.getElementById('province');
const city = document.getElementById('city');
const area = document.getElementById('area');

Object.keys(data).forEach(function (k) {
  const option = document.createElement('option');
  option.text = k;
  province.add(option);
});

province.addEventListener('change', function () {
  const selectedProvince = province.value;
  const cities = data[selectedProvince];
  city.innerHTML = '<option>请选择城市</option>';
  area.innerHTML = '<option>请选择地区</option>';
  Object.keys(cities).forEach(function (k) {
    const option = document.createElement('option');
    option.text = k;
    city.add(option);
  });
});

city.addEventListener('change', function () {
  const selectedProvince = province.value;
  const selectedCity = city.value;
  const areas = data[selectedProvince][selectedCity];
  area.innerHTML = '<option>请选择地区</option>';
  areas.forEach(function (k) {
    const option = document.createElement('option');
    option.text = k;
    area.add(option);
  });
});
</script>

</body>
</html>

在这个例子中,我们在 HTML 中添加了三个下拉菜单的元素,并在 JavaScript 中动态地添加了对应的选项。当用户选择了省份之后,城市和地区选项即会自动刷新,显示该省份下的城市和地区。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:一个最简单的级联下拉菜单 - Python技术站

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

相关文章

  • JavaScript中立即执行函数实例详解

    JavaScript中的立即执行函数是指在定义后立即执行的函数,该函数执行后,返回值即被抛弃,仅保留函数内部的执行结果,不会对全局环境造成污染。本文将详细讲解JavaScript中立即执行函数的各个方面,包括基本语法、应用示例以及优缺点等。 基本语法 JavaScript中的立即执行函数需要使用一对匿名函数进行定义,但为了避免匿名函数对全局环境造成影响,并使…

    JavaScript 2023年5月27日
    00
  • JavaScript Math对象使用方法

    JavaScript中的Math对象是一个内置的对象,提供了许多数学计算方法和常数。Math对象中的所有方法和常数都是静态的,意味着你不需要创建一个Math对象就可以使用这些方法和常数。下面是Math对象中一些常用的方法和常数以及示例代码。 1. Math.PI Math.PI表示圆周率,它是一个不变的数值,约等于3.141592653589793。你可以通…

    Web开发基础 2023年3月30日
    00
  • js学习总结_轮播图之渐隐渐现版(实例讲解)

    “js学习总结_轮播图之渐隐渐现版(实例讲解)”是一篇关于JavaScript技术的教程文章,主要介绍了如何使用JavaScript编写一个渐隐渐现的轮播图效果。本教程分为以下几个步骤: 一、需求分析 首先明确轮播图需要具备的功能和效果,例如自动轮播、手动切换、渐隐渐现等。 二、基本思路 使用HTML5和CSS3创建轮播图的HTML结构和CSS样式,然后通过…

    JavaScript 2023年6月11日
    00
  • JS正则中的RegExp对象对象

    下面是关于JS正则中的RegExp对象的完整讲解攻略: 1. 什么是RegExp对象 RegExp对象是JS中用来表示正则表达式的对象,它可以用来执行文本匹配和文本替换等操作,同时也可以通过其属性和方法获取和操作正则表达式对象。 2. RegExp对象的创建方法 在JS代码中,我们可以通过两种方式来创建RegExp对象: 方法一:使用字面量创建 使用字面量的…

    JavaScript 2023年6月10日
    00
  • js插件方式打开pdf文件(浏览器pdf插件分享)

    下面是关于“js插件方式打开pdf文件(浏览器pdf插件分享)”的完整攻略: 1. 准备工作 在实现该功能前,需要将需要打开的pdf文件上传到服务器,并记住该文件的访问地址。 2. 确认浏览器是否支持pdf插件 首先,需要确认当前浏览器是否提供了自带的pdf插件或者是否安装了第三方的pdf插件。 可以让用户打开一个测试页面,例如: <!DOCTYPE …

    JavaScript 2023年5月27日
    00
  • javaScript产生随机数的用法小结

    下面是JavaScript产生随机数的用法小结: 1. Math.random()方法 在JavaScript中,我们可以使用Math.random()方法产生一个0到1之间的随机数。例如,在以下代码中,我们可以产生一个0到1之间的随机数,并将其乘以10得到一个0到10之间的随机数: let randNum = Math.random() * 10; con…

    JavaScript 2023年5月28日
    00
  • JS产生随机数的几个用法详解

    JS 产生随机数的几个用法详解 在前端开发中,生成随机数是常见的需求。在 JavaScript 中,我们有很多不同的方式来生成随机数,接下来将详细介绍常见的几种方式。 1. Math.random()方法 Math.random() 方法是 JavaScript 中生成伪随机数的默认方法。可以使用以下代码来生成 0 至 1 之间的随机小数。 const ra…

    JavaScript 2023年5月28日
    00
  • Javascript toFixed 方法

    以下是关于JavaScript toFixed方法的完整攻略。 JavaScript toFixed方法 JavaScript toFixed()方法是Number对象的一个方法,用于将数字转换字符串,并保留指定的小数位数。我们可以使用toFixed()方法来格式化数字,使其符合我们的需求。 下面是一个使用()方法的示例: var num = 3.14159…

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