通过选择另一个下拉值动态填充下拉列表

2023-12-09

我的要求是,对于“膳食”下拉列表中的选择,第二个下拉列表“类别”应动态填充与第一个下拉列表中的选择相关的值。然后,根据膳食下拉菜单中选择的内容,列表的类别应发生变化。我已经编写了以下 Javascript 函数,但我得到的输出并不是新填充第二个下拉列表。更改选择后,新列表将被附加到旧列表中。

function changecat() {
    var selectHTML = "";

    var A = ["Soup", "Juice", "Tea", "Others"];
    var B = ["Soup", "Juice", "Water", "Others"];
    var C = ["Soup", "Juice", "Coffee", "Tea", "Others"];

    if (document.getElementById("meal").value == "A") {
        var select = document.getElementById('category').options.length;

        for (var i = 0; i < select; i++) {
            document.getElementById('category').options.remove(i);
        }

        for (var i = 0; i < A.length; i++) {
            var newSelect = document.createElement('option');
            selectHTML = "<option value='" + A[i] + "'>" + A[i] + "</option>";
            newSelect.innerHTML = selectHTML;
            document.getElementById('category').add(newSelect);
        }
    }

    else if (document.getElementById("meal").value == "B") {
        var select = document.getElementById('category').options.length;

        for (var i = 0; i < select; i++) {
            document.getElementById('category').options.remove(i);
        }

        for (var i = 0; i < B.length; i++) {
            var newSelect = document.createElement('option');
            selectHTML = "<option value='" + B[i] + "'>" + B[i] + "</option>";
            newSelect.innerHTML = selectHTML;
            document.getElementById('category').add(newSelect);
        }
    }

    else if (document.getElementById("project").value == "C") {
        var select = document.getElementById('category').options.length;

        for (var i = 0; i < select; i++) {
            document.getElementById('category').options.remove(i);
        }

        for (var i = 0; i < C.length; i++) { 
            var newSelect = document.createElement('option');
            selectHTML = "<option value='" + C[i] + "'>" + C[i] + "</option>";
            newSelect.innerHTML = selectHTML;
            document.getElementById('category').add(newSelect);
        }
    }
}

HTML-  
<select name="meal" id="meal" onchange="changecat();">
    <option value="">Select</option>
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
</select>

<select name="category" id="category">
    <option value="">Select</option>
</select>

希望这可以帮助你。

JSFiddle:演示

HTML

<select name="meal" id="meal" onChange="changecat(this.value);">
    <option value="" disabled selected>Select</option>
    <option value="A">A</option>
    <option value="B">B</option>
    <option value="C">C</option>
</select>
<select name="category" id="category">
    <option value="" disabled selected>Select</option>
</select>

JS

var mealsByCategory = {
    A: ["Soup", "Juice", "Tea", "Others"],
    B: ["Soup", "Juice", "Water", "Others"],
    C: ["Soup", "Juice", "Coffee", "Tea", "Others"]
}

    function changecat(value) {
        if (value.length == 0) document.getElementById("category").innerHTML = "<option></option>";
        else {
            var catOptions = "";
            for (categoryId in mealsByCategory[value]) {
                catOptions += "<option>" + mealsByCategory[value][categoryId] + "</option>";
            }
            document.getElementById("category").innerHTML = catOptions;
        }
    }

JavaScript 中有一个循环(for...in 循环),在这种情况下它会帮助你

for...in 循环仅迭代可枚举属性。对象 从内置构造函数(如数组和对象)创建的 从 Object.prototype 继承了不可枚举属性并且 String.prototype,例如String的indexOf()方法或Object的 toString() 方法。循环将迭代所有可枚举的 对象本身的属性以及对象从其继承的属性 构造函数的原型(更接近对象的属性 原型链覆盖原型的属性)。

在每次迭代中,对象的一个​​属性被分配给变量名,并且此循环继续,直到对象的所有属性都用尽为止。

了解更多Link

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过选择另一个下拉值动态填充下拉列表 的相关文章

  • 向下滚动时如何使图像移动?

    这是我想要实现的目标的示例 https www flambette com en https www flambette com en 我尝试过更改图像的 css 属性 但效果不能满足我的需求 我尝试过以下代码 mydocument on
  • 将字符串编码为 HTML 字符串 Swift 3

    如何快速编码字符串以删除所有特殊字符并将其替换为其匹配的 html 编号 假设我有以下字符串 var mystring This is my String That s it 然后用它的html编号替换特殊字符 38 39 gt 62 但我
  • 如何在 Jest 测试中模拟 StatusBarManager.getHeight?

    我正在使用 expo 34 并且反应本机用户界面库 https www npmjs com package react native ui lib来自 wix 并且在为我的组件设置笑话测试时遇到问题 问题看起来出现在link https g
  • jQuery UI 对话框使用 setTimeout 自动关闭

    我试图让对话框在打开后三秒自动关闭 我尝试过以下方法 setTimeout mydialog dialog close 3000 这是在上下文中 acknowledged dialog dialog height 140 modal tru
  • Angular UI.Bootstrap 单选按钮在 ng-repeat 中表现得很奇怪[重复]

    这个问题在这里已经有答案了 我在 Angular 的 ui bootstrap 中动态生成无线电模型的选项时遇到问题 我想我可以简单地对数组进行 ng repeat 使用 btn radio 属性的内容 如下所示 in the contro
  • 表单提交不起作用

    我有一张桌子 可以打印出所有可用的相机 它使用表单来更改这些设置 问题在于该表单仅更新条目中的最后一个摄像机 换句话说 如果我更改表单并为列表中的最后一个摄像机点击 应用 它将起作用 如果我更改此列表中任何其他摄像机的表单 它会将其更改为与
  • 将一个 div 放置在另一个 div 的底部

    我有外部 div 和内部 div 我需要将内部 div 放在外部 div 的底部 外层div是有弹性的 例如宽度 70 我还需要将内部块居中 所述化妆的简单模型如下图所示 已在 Firefox 3 Chrome 1 和 IE 6 7 和 8
  • Google Maps JS Api - b.get 不是函数错误(isLocationOnEdge)

    我想检查我的路线上是否有标记 所以我尝试使用 isLocationOnEdge 但收到 TypeError b get 不是函数 错误 这是我的代码 我尝试了几次更改但无法解决问题 var directionsDisplay new goo
  • JQuery _renderItem 没有被调用

    我正在尝试使用 renderItem 函数创建自定义 ui menu item 元素 但经过可能尝试后 我什至无法调用该函数 自动完成功能正在工作 但就像 renderItem 函数不存在一样 这是我的脚本部分
  • 从 UnityWebGL jslib 返回字符串

    我想使用 jslib 来获取网址参数 像这样的代码 jslib GetUrl function var s var strUrl window location search var getSearch strUrl split var g
  • jQuery 面板滑块通过单击按钮打开但不会关闭

    我的页面上有一个按钮 可以使用 jquery 和 Modernizr 框架打开右侧面板 按钮位于屏幕最右侧 单击时 它会向左滑动并打开打开的面板 问题是 再次单击时它不会滑回到原来的位置 HTML div class cd panel fr
  • 是否可以从 webpack 中的文件名中删除特殊字符?

    长话短说 我的资产文件名中不能包含某些字符 例如连字符 我没有运气通过解析 webpack 文档来弄清楚是否可以使用正则表达式或类似的东西重命名文件 这样我就可以从我无法控制源文件名的 3rd 方包中删除任何连字符 我的超级天真的例子是这样
  • router.navigate 使用查询参数 Angular 5

    我在使用查询参数路由到路由时遇到问题我有一个像这样的函数 goToLink link this router navigate link split 0 queryParams this sortParams link 和这个功能 sort
  • JQuery Mobile - 内联显示 HTML 表单

    Goal 在 Jquery Mobile 中的同一行显示文本框和提交按钮 Problem 它们不会显示在同一行 我曾多次尝试在同一行显示文本框和提交按钮 但它从未起作用 这是我的代码和我使用的组合
  • jVectorMap - 向下钻取地图 - 自定义背景

    我正在使用 jVectorMap 中的向下钻取地图 并且尝试将自定义背景颜色设置为地图的第二层 为了自定义主级别 我使用 main 参数 但我不知道如何将其扩展到地图的较低级别 提前致谢 马切伊 None
  • jQuery 显示/隐藏兄弟姐妹

    我有这段代码 旨在首先隐藏除第一个元素之外的所有相关元素 这个 做的不错啊接下来 它应该根据选择的项目显示 隐藏这些元素 但这部分不起作用 想法 jQuery accordion dl not first child hide hide a
  • 使用重复模式捕获正则表达式

    我试图捕获字符串的所有部分 但我似乎无法正确处理 该字符串具有以下结构 1 22 33 中间有运算符的数字 可以有任意数量的术语 我想要的是 1 22 33 1 22 33 但我得到 1 22 33 22 33 我尝试过各种正则表达式 这是
  • 更改 CSS 样式表的选择器属性

    以下是我们传统上如何更改重复元素的样式 将样式应用到每个元素 function changeStyle selector prop val var elems document querySelectorAll selector Array
  • ☺ 不在移动版本中呈现

    我如何获得特殊角色 笑脸在移动浏览器中正确呈现 li a href http goo gl GjxlI title target blank span style font size 20px span a li 它在大多数浏览器上显示为
  • 为什么对于整数键,“Map”操作比 JavaScript (v8) 中的“Object”慢得多?

    我很高兴使用Map对于在我的 JavaScript 代码库中随处访问的索引 但我刚刚偶然发现了这个基准 https stackoverflow com a 54385459 365104 https stackoverflow com a

随机推荐

  • iPhone内存管理

    我正在开发一个应用程序 我想确保我正确管理内存并释放我应该释放的所有内容 在我的 viewDidLoad 方法中 我分配了一些变量来确定应用于视图的背景 用于国际化 如果我不释放它们 应用程序可以正常工作 问题是 如果我释放变量 应用程序就
  • 在反应本机样式表中使用变量将无法识别该变量

    我将颜色作为 props color 导入到我的功能组件中 并将其设置为状态 tagColor 当我在样式表中使用 tagColor 作为值来设置背景颜色时 我收到错误 找不到变量 tagColor 如何在样式表中使用变量 const Ta
  • 值与实体对象(领域驱动设计)

    我刚刚开始阅读DDD 我无法完全理解实体与值对象的概念 有人可以解释当值对象被设计为实体对象时系统可能面临的问题 可维护性 性能 等 吗 例子会很棒 简化为本质区别 身份对于实体很重要 但对于价值对象并不重要 例如 某人的姓名是一个值对象
  • WCF异常抛出和OOP方式处理

    好的 所以我就同一主题提出了另一个问题here虽然我没有得到直接的答案 但我整理了一些代码来完成我想做的事情 问题是 这种方式是否违反了一些 OOP 原则 我想要什么 使用正确的 OOP 声明服务的故障类型 在客户端有一个 catch 块
  • 是否可以使用 MediaStore.VOLUME_EXTERNAL 获取 WhatsApp 媒体文件

    我的应用程序需要备份 WhatsApp 状态 语音注释和图像的功能 如您所知 Android Q 后谷歌强制使用 MediaStore API 访问外部媒体文件 WhatsApp 还将他们的文件移至 Android media com wh
  • 使用 Scala 合并两个 CSV 文件的交集

    从输入 1 开始 fruit apple cider animal beef burger 并输入 2 animal beef 5kg fruit apple 2liter fish tuna 1kg 我需要制作 fruit apple c
  • Jquery UI 自动完成事件更改

    您好 我遇到了更改事件的问题 根据文档 应该有对象 ui item 选择一个项目后 ui item 指所选项目 始终在关闭事件后触发 但是当我尝试时 ui item 未定义 当自动完成中的输入与脚本中的数据不匹配时 我希望取消设置 s to
  • R - 添加在组内按顺序计数但重复重复的列

    我正在寻找一种解决方案来添加 desired result 列 最好使用 dplyr 和 或 ave 请参阅此处的数据框 其中组是 部分 我希望 desired results 列按顺序计数的唯一实例位于 exhibit 中 structu
  • .Net core 在静态文件夹(www)中添加文件夹并保存图像文件

    在静态文件夹中添加文件并在静态文件夹中保存图像 将 Base64 图像保存在 Dot net Core 项目中 public class EventMastersController Controller private IHostingE
  • Xcode 6.4 中的模拟器太多了

    我的 xCode 应用程序中有太多我尝试删除 但稍等片刻它又回到设备列表如何删除它 xcode 版本 6 4 6E35b 图片来自我的 xCode 设备列表中的图片 退出 Xcode 和模拟器 然后 在终端中 说 xcrun simctl
  • .包含在以下查询中并不真正包含

    var diaryEntries from entry in repository GetQuery
  • 如何使用 Struts 2 标签迭代 Set 元素

    我有两个Sets set1 contains A B C D elements set2 contains E F D G elements 我想比较每个元素set1与每一个元素set2并使用 Struts2 标签显示匹配的元素 重新整理以
  • strings.xml 中的参数可以吗? [复制]

    这个问题在这里已经有答案了 在我的 Android 应用程序中 我将通过国际化来实现我的字符串 我对不同语言的语法和句子构建方式有疑问 例如 5 分钟前 英语 vor 5 分钟 德语 我可以在 strings xml 中执行类似以下操作吗
  • 在 firebase 上使用 gzip 压缩

    我正在尝试在 Firebase 托管的 Web 上压缩 css 和 js 以提高加载速度 但是我无法使用 firebase json 配置文件为我的资产正确设置 gzip 压缩 The curl v命令显示从服务器提供文件时不执行压缩 还检
  • 为什么 std::unique_ptr 向量会出现无效指针异常

    我编写了简单的代码来帮助我理解智能指针 string s str vector
  • 如何在Android中的位图图像上添加字符串?

    我想在位图图像上添加一个字符串 我有一个方法drawTextToBitmap 这个方法工作成功 将字符串放在位图图像上 但是我的位图图像非常小 就像 pinmark 图像一样 这个函数根据位图高度和宽度设置字符串 我想放置的字符串超过位图图
  • numba 渴望编译吗?图案是什么?

    我在 numba 网站上查看了 eager Compilation 但无法弄清楚如何指定类型 他们使用的例子是这样的 from numba import jit int32 jit int32 int32 int32 def f x y A
  • 如何在通知中向服务发送 PendingIntent 后隐藏通知面板

    All 我编写了一个服务来更新系统状态 然后使用 startForeground 将服务置于前台 同时向其添加通知 在通知中 我使用remoteView获得三个带有三个OnClickPendingIntent的图像 其中之一是发送回服务 并
  • 我如何在活动中获取接收器实例(在AndroidManifest.xml中注册)

    我已经在 AndroidManifest xml 中注册了一个接收器 如下所示
  • 通过选择另一个下拉值动态填充下拉列表

    我的要求是 对于 膳食 下拉列表中的选择 第二个下拉列表 类别 应动态填充与第一个下拉列表中的选择相关的值 然后 根据膳食下拉菜单中选择的内容 列表的类别应发生变化 我已经编写了以下 Javascript 函数 但我得到的输出并不是新填充第