【发布时间】:2020-02-23 12:19:42
【问题描述】:
我有一个选择输入框,允许我选择多个值。在这种情况下,我有 4 个类别,当我单击一个类别时,会出现子类别。如您所见,它工作得很好。唯一的问题是,当我选择多个类别时,它仅显示第一个选定类别的子类别。选择多个类别时,如何显示每个类别及其子类别?例如,如果我选择类别 1、类别 2 和类别 3,我希望显示以下内容:
类别 1:子类别 1.1、子类别 1.2
类别 2:子类别 2.1、子类别 2.2
类别 3:子类别 3.1、子类别 3.2
$('select').on('change', function () {
var subcategories = '';
var str = "This category contains these subcategories: ";
var result = str.bold();
switch (this.value) {
case 'Category 1':
subcategories = "Subcategory 1.1, Subcategory 1.2";
break;
case 'Category 2':
subcategories = "Subcategory 2.1, Subcategory 2.2";
break;
case 'Category 3':
subcategories = "Subcategory 3.1, Subcategory 3.2";
break;
case 'Category 4':
subcategories = "Subcategory 4.1, Subcategory 4.2";
break;
}
document.getElementById("showSubcategory").innerHTML = result + subcategories;
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select multiple>
<option value="Category 1">Category 1</option>
<option value="Category 2">Category 2</option>
<option value="Category 3">Category 3</option>
<option value="Category 4">Category 4</option>
</select>
<div id="showSubcategory"></div>
【问题讨论】:
-
获取
selectedOptions并对其进行迭代。 -
正如@ChrisG 建议的那样,您可以使用
Array.from(this.selectedOptions).map(function(x) { return x.value; });来获取值列表。你可以用 ES6[...this.selectedOptions].map(x => x.value)来缩短它。
标签: javascript jquery html