使用 HTML、CSS 和 JavaScript 显示下拉菜单中选定的项目

使用 html、css 和 javascript 显示下拉菜单中选定的项目

本文档详细介绍了如何使用 HTML、CSS 和 JavaScript 创建一个动态下拉列表,该列表从 JSON 数据源获取选项,并允许用户搜索和选择项目。我们将重点介绍如何正确地将事件处理程序附加到下拉列表选项,以便在选择项目时能够捕获并显示其值。此外,还将介绍如何使用 CSS 来增强下拉列表的样式和用户体验。

创建动态下拉列表

首先,我们需要一个 HTML 结构来容纳下拉列表。 这包括一个触发下拉菜单的按钮和一个用于显示选项的容器。

接下来,使用 JavaScript 从 JSON 数据动态填充下拉列表。关键在于使用 document.createElement() 创建新的 元素,并将它们添加到下拉菜单中。 这种方法允许我们轻松地将事件监听器附加到每个选项。

function myFunction() {  var country = [    { "ID": "001", "Country_Name": "India" },    { "ID": "002", "Country_Name": "Australia" },    { "ID": "003", "Country_Name": "Austria" },    { "ID": "004", "Country_Name": "China" },    { "ID": "005", "Country_Name": "Bangladesh" }  ];  document.getElementById("myDropdown").classList.toggle("show");  var ele = document.getElementById("myDropdown");  // 循环遍历国家/地区数组  for (var i = 0; i < country.length; i++) {    // 创建一个锚元素    const countryOption = document.createElement("a");    // 将国家/地区 ID 保存在其 value 属性中    countryOption.setAttribute('value', country[i]['ID']);    // 将国家/地区名称作为其 innerText    countryOption.innerText = country[i]['Country_Name'];    // 将类 dropdown-option 添加到选项元素    countryOption.classList.add('dropdown-option');    // 将 countryOnClick 函数(在下面定义)绑定为单击事件处理程序    countryOption.addEventListener('click', countryOnClick);    // 将新锚点附加到下拉元素    ele.appendChild(countryOption);  }}

处理选项选择

现在,我们需要一个函数来处理选择下拉列表中的选项。此函数应检索所选选项的值并执行所需的操作,例如在控制台中显示该值或更新页面上的其他元素。

立即学习“Java免费学习笔记(深入)”;

// 下拉选项的单击事件处理程序function countryOnClick(event) {  // 从触发事件的元素中获取国家/地区属性  const clickedOption = event.target;  const countryID = clickedOption.getAttribute('value');  const countryName = clickedOption.innerText;  // 从下拉菜单中的每个选项中删除 selectedOption 类  clickedOption.closest('div').querySelectorAll('.dropdown-option').forEach((o, i) => {    o.classList.remove('selectedOption');  });  // 将 selectedOption 类添加到选定的选项元素  clickedOption.classList.add('selectedOption');  // 在控制台中显示这些数据  console.log(`${countryID} - ${countryName}`);  console.log(getSelectedOption());}function getSelectedOption() {  return document.querySelector('#myDropdown > .dropdown-option.selectedOption');}

此代码首先获取所单击的选项的 ID 和名称。 然后,它从所有其他选项中删除 selectedOption 类,并将该类添加到所单击的选项。 最后,它将 ID 和名称记录到控制台。 getSelectedOption 函数可用于获取当前选定的选项。

添加搜索功能

为了增强用户体验,我们可以添加一个搜索功能来过滤下拉列表中的选项。 这可以使用 onkeyup 事件处理程序和一些 JavaScript 来完成。

// 当过滤器输入更改时调用,它会过滤下拉选项列表function filterFunction() {  var input, filter, ul, li, a, i;  input = document.getElementById("myInput");  filter = input.value.toUpperCase();  div = document.getElementById("myDropdown");  a = div.getElementsByTagName("a");  for (i = 0; i  -1) {      a[i].style.display = "";    } else {      a[i].style.display = "none";    }  }}

此代码获取搜索输入的值并将其转换为大写。 然后,它循环遍历下拉列表中的所有选项,并显示与搜索输入匹配的选项。

样式化下拉列表

最后,我们可以使用 CSS 来样式化下拉列表以使其更具视觉吸引力。

#myInput {  box-sizing: border-box;  background-image: url('searchicon.png');  background-position: 14px 12px;  background-repeat: no-repeat;  font-size: 16px;  padding: 14px 20px 12px 45px;  border: none;  border-bottom: 1px solid #ddd;}#myInput:focus {  outline: 3px solid #ddd;}position: relative;display: inline-block;}.dropdown-content {  display: none;  position: absolute;  background-color: #f6f6f6;  min-width: 230px;  border: 1px solid #ddd;  z-index: 1;}.dropdown-content a {  color: black;  padding: 12px 16px;  text-decoration: none;  display: block;}.dropdown-content a:hover {  background-color: #f1f1f1}.show {  display: block;}.dropdown-content > .dropdown-option{  cursor: pointer;}.dropdown-content > .selectedOption{  background-color: darkgray !important;}

此 CSS 代码设置搜索输入和下拉列表本身的样式。 它还添加了一个悬停效果,并在选择选项时更改背景颜色。

总结

通过遵循这些步骤,您可以创建一个动态下拉列表,该列表从 JSON 数据源获取选项,并允许用户搜索和选择项目。 关键在于使用 document.createElement() 创建新的 元素,并将它们添加到下拉菜单中。 这种方法允许我们轻松地将事件监听器附加到每个选项。

以上就是使用 HTML、CSS 和 JavaScript 显示下拉菜单中选定的项目的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1579086.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月22日 20:19:44
下一篇 2025年12月22日 20:19:51

相关推荐

  • 解决Haskell CGI应用在Apache下读取文件数据时输出截断问题

    本教程探讨Haskell CGI应用在Apache服务器环境下,读取包含非ASCII字符的文件数据时,HTML输出可能被截断的问题。核心原因在于CGI环境的默认语言环境(LANG=C)与文件编码不匹配。我们将详细介绍如何通过在CGI主函数中设置`GHC.IO.Encoding.setLocaleEn…

    2025年12月23日
    000
  • 如何通过点击的 div 获取正确的 ID

    本文旨在解决动态生成的 HTML 元素中,点击事件无法获取正确 ID 的问题。通过事件委托和 DOM 元素查找,我们将提供一种可靠的方法,确保点击事件能够准确地获取与点击元素关联的 ID 值。本文将提供详细的代码示例和解释,帮助开发者解决类似问题。 在动态生成 HTML 内容时,特别是使用循环生成多…

    2025年12月23日
    000
  • PHP滑块页面提交表单后返回原激活幻灯片的教程

    本文旨在解决PHP滑块页面在用户提交表单后,页面重定向回第一张幻灯片而非原激活幻灯片的问题。我们将探讨两种主要解决方案:通过URL参数传递幻灯片状态,以及利用浏览器localStorage存储幻灯片状态。这两种方法都能确保用户在提交评论等操作后,无缝返回到其之前浏览的幻灯片位置,显著提升用户体验。 …

    2025年12月23日
    000
  • 使用键盘事件实现JavaScript自动滚动启停控制

    本教程详细介绍了如何利用javascript实现页面内容的自动滚动,并通过键盘事件对其进行交互式控制。我们将学习如何使用布尔标志和事件监听器,让用户通过按下特定按键(如“a”键启动,“e”键停止)来精确控制自动滚动的启停,从而提升用户体验和页面互动性。 在现代网页应用中,有时我们需要实现页面的自动滚…

    2025年12月23日 好文分享
    000
  • JavaScript 实现多独立下拉菜单的 ClassList 精确切换教程

    本教程旨在解决javascript中处理多个独立下拉菜单时,如何精确切换每个菜单项的css类的问题。通过讲解dom遍历方法closest()和queryselector()的结合使用,我们将展示如何为每个被点击的菜单触发器单独控制其对应下拉列表的显示与隐藏,从而避免只影响第一个菜单的常见错误,实现高…

    2025年12月23日
    000
  • 实现可点击菜单项自动关闭的响应式导航栏

    本教程详细介绍了如何优化响应式导航栏的用户体验,使其在移动端展开后,用户点击任意菜单项时能够自动收起。通过调整javascript事件监听器并结合css样式控制,我们将展示如何实现这一功能,从而提升导航栏的直观性和易用性。 在现代Web开发中,响应式导航栏是不可或缺的组件。尤其是在移动设备上,当导航…

    2025年12月23日
    000
  • z-index与绝对定位:解决背景图片被子元素覆盖的问题

    在CSS布局中,我们经常会遇到需要将一个元素(例如图片)作为背景,但又希望通过绝对定位来精确控制其位置的场景。当尝试通过设置`position: absolute`和`z-index: -1`来实现这种“背景”效果时,却发现图片被父容器的子元素的背景色完全遮挡,这通常是由于对CSS堆叠上下文(Sta…

    2025年12月23日
    000
  • Vaadin应用中处理与下载动态SVG内容的指南

    本文旨在解决vaadin应用中从服务器端访问并下载客户端动态生成svg内容的挑战。由于vaadin默认不自动同步客户端dom变化,文章将介绍两种核心策略:一是利用littemplate机制,通过@id注解将模板内定义的svg元素映射到服务器端java组件;二是推荐在服务器端直接通过字符串拼接方式构建…

    2025年12月23日
    000
  • 构建响应式导航栏:避免链接在视口外溢出

    本文旨在解决html/css导航栏在窗口调整时链接溢出视口的问题。核心问题在于对导航栏及其容器设置了固定的宽度,阻碍了其响应式行为。通过采用`position: fixed`配合`top/left/right`属性,并移除容器的硬编码宽度限制,可以确保导航栏在各种屏幕尺寸下都能正确显示,实现灵活的布…

    2025年12月23日
    000
  • Google Apps Script:自动记录表单提交时间

    本教程旨在指导您如何在google apps script中,为处理表单提交并写入google电子表格的函数自动添加日期和时间戳。通过利用javascript的`date`对象,您可以轻松地将数据提交的时间点记录到指定的列中,从而提高数据追踪和审计的效率。文章将详细介绍如何修改现有脚本以实现此功能,…

    2025年12月23日
    000
  • 利用CSS resize 属性实现元素尺寸调整的现代方法

    本文旨在探讨如何利用CSS的`resize`属性,为HTML元素提供原生的尺寸调整功能,从而避免复杂的JavaScript DOMRect操作。通过设置`resize`属性并配合`overflow`属性,开发者可以轻松实现水平、垂直或双向的元素尺寸调整,为构建如操作系统窗口等交互式组件提供高效且性能…

    2025年12月23日
    000
  • 去除元素内容与::after伪元素内容之间的尾部空格

    本文旨在解决HTML元素内容与`::after`伪元素生成内容之间存在的尾部空格问题。通过CSS技巧,巧妙地在`::after`伪元素中添加前置空格并利用负边距进行抵消,从而实现视觉上的一致性,确保内容紧密相连,提升用户体验和可访问性。 在网页开发中,我们经常会使用::after伪元素来在元素内容之…

    2025年12月23日
    000
  • 使用Tailwind CSS实现Flexbox子元素底部对齐的教程

    本教程详细介绍了如何使用tailwind css将flexbox容器中的子元素垂直对齐到底部。核心方法是为父容器设置`h-screen`或`min-h-screen`以确保其占据足够的高度,并结合`flex`和`items-end`这两个flexbox工具类,从而精确控制子元素在垂直轴上的对齐方式,…

    2025年12月23日
    000
  • 在React中实现基于用户输入的动态列表过滤教程

    本教程将指导您如何在react应用中实现动态列表过滤功能,使用户能够通过输入框实时筛选显示的数据,例如聊天用户列表。我们将详细讲解如何利用react的状态管理、事件处理和条件渲染机制,结合示例代码,构建一个高效且用户友好的搜索过滤界面。 引言:动态数据筛选的重要性 在现代Web应用中,展示大量数据并…

    2025年12月23日
    000
  • Safari浏览器中CSS布局对齐问题解析与display: flex解决方案

    本文深入探讨了在Safari浏览器中使用justify-content或text-align无法实现按钮内容居中对齐的常见问题,并提供了全面的解决方案。核心在于理解justify-content属性必须应用于Flexbox或Grid容器,通过将目标元素设置为display: flex,可以有效解决跨…

    2025年12月23日
    000
  • HTML表单method怎么用_HTML表单提交方式get与post的区别与选择

    HTML表单的method属性决定数据提交方式,GET将数据附加在URL后,适合获取数据且不修改服务器状态的场景;2. POST将数据放在请求体中,更安全且无长度限制,适用于传输敏感信息或大量数据;3. 选择依据是操作本质:仅获取用GET,修改数据或涉及安全用POST,现代开发建议默认使用POST以…

    2025年12月23日
    000
  • Ionic/Angular框架中:host CSS样式有效覆盖指南

    本文旨在提供在ionic和angular应用中有效覆盖`:host` css样式的详细指南。我们将探讨css层叠与特异性原理,并介绍如何通过调整样式顺序、利用父选择器以及在必要时使用`!important`规则来成功修改组件的宿主样式,确保您的自定义样式能够正确生效。 理解:host选择器与样式作用…

    2025年12月23日
    000
  • 部署与调度Node.js爬虫:从本地执行到云端集成

    本教程详细指导如何部署和调度一个基于node.js的网页爬虫,使其能够每日自动运行并将其数据提供给前端应用。文章将区分客户端与服务器端javascript的运行环境,介绍本地任务调度方法,并探讨将爬虫集成到在线服务以实现数据共享的策略,同时涵盖数据持久化、cors处理及部署最佳实践。 1. 理解No…

    2025年12月23日
    000
  • HTML5模板标签怎么用_HTML5template标签实现内容模板的方法

    答案:HTML5的标签用于定义不渲染的HTML模板,通过JavaScript克隆其content属性可动态插入DOM,具有性能好、结构清晰、易于维护等优势,适用于列表、卡片、模态框等动态内容场景。 HTML5 的 标签是一个非常实用的功能,用于定义页面中暂时不渲染的 HTML 模板内容。这些内容可以…

    2025年12月23日
    000
  • HTML表单action怎么设置_HTML表单提交目标地址action属性用法

    HTML表单的action属性指定数据提交的URL,可设为相对路径、绝对路径或留空;需与method配合使用,确保目标地址有效且服务器能处理,是实现用户交互的基础。 HTML表单中的 action 属性用于指定表单提交后,数据将被发送到哪个URL进行处理。这个URL可以是相对路径、绝对路径,也可以是…

    2025年12月23日
    000

发表回复

登录后才能评论
关注微信