我想创建一个HTML格式的选择表单,如果选中了第一个选择组中的某些选项,该表单将检查是否显示第二个选择组
<body>
<form name="Test">
<!-- all the factors to account for when calculating odds-->
<div>
<label>
<select name="FirstList" id="FirstListID">
<option value="1">First option</option>
<option value="2">Second option</option>
<option value="3">Third option</option>
</select><br>
<!-- SecondList would be visible if "1" is selected-->
<label name="SecondList" style="display:none">List for "1":
<select name="SecondListSelect" id="SecondListSelectID">
<option value="3">Placeholder</option>
</select><br>
</label>
<!-- ThirdList would be visible if "2" is selected-->
<label name="ThirdList" style="display:none">List for "2":
<select name="ThirdListSelect" id="ThirdListSelectID">
<option value="4">Placeholder</option>
</select><br>
</label>
<!-- No secondary select form appears if "3" is selected-->
</div>
</form>
</body>
我试过使用AddEventListeners,但是代码看起来不太好维护,因为我计划在主下拉菜单中添加更多的选项,所以我需要不断地根据选择的主选项添加出现的辅助选择组。我该如何在JS中编写代码呢?
3条答案
按热度按时间k5ifujac1#
为每个
<label>
指定一个标识符,将其绑定到应该可见的value
。数据属性将起作用。然后,每当<select>
发生变化时,迭代所有此类标签并隐藏它们。从select中取出.value
,并使用字符串连接为数据集中的元素构造一个选择器,然后可以选择该元素并显示它。例如,使用如下标签
你本可以
在变更监听器中。
u91tlkcl2#
将第二个
<select>
元素的选项存储在一个对象中。确保键与第一个<select>
中选项的value
属性值匹配。在第一个
<select>
上侦听change
事件,每当发生更改时,清空第二个<select>
的选项,从对象中获取新选项,并使用该数据创建新的<option>
元素。现在您有了一个易于扩展的动态
<select>
元素。wmvff8tz3#
您可以从js文件构建选择器:
如果有很多选项,你可以把它们移到一个json文件中,然后从那里请求它们。