根据下拉列表中选择的内容隐藏和显示 HTML 元素
Hide and display HTML elements based on what was chosen in a dropdown
我的网站是在ASP classic - VBScript中创建的(不是我的选择,是我之前没有经验的语言)。我正在尝试创建一个网页,其中:下拉菜单根据第一个中选择的内容显示一个额外的下拉菜单。我正在尝试使用javascript函数来实现这一点。
例:
在第一个下拉列表中,用户选择冰淇淋或薯片。根据用户选择的内容,另一个下拉菜单给出了口味的选择。
冰淇淋:香草、巧克力、薄荷。
薯片:现成的咸味,奶酪和洋葱,盐和醋。
这是我的代码当前的样子:
.HTML
<select id="food" onchange="fctCheck(this.value)">
<option value="">Choose an item</option>
<option value="icecream">Ice cream</option>
<option value="crisps">Crisps</option>
</select>
<select id="icecream" style="display:none">
<option value="vanilla">Vanilla</option>
<option value="chocolate">Chocolate</option>
<option value="mint">Mint</option>
</select>
<select id="crisps" style="display:none">
<option value="readysalted">Ready Salted</option>
<option value="cheeseandonion">Cheese and Onion</option>
<option value="saltandvinegar">Salt and Vinegar</option>
</select>
.
JavaScript
function fctCheck(food)
{
if (food == "")
{document.getElementById(food).style.display = "none";}
else
{document.getElementById(food).style.display = "block";}
}
>正如 st3inn this.value
所提到的绝对没问题 - 只有 document.getElement==>B<==yId
的错别字。
但是您的代码有一个缺点,即用户可以同时选择这两个选项,因此两个子选择都可见。
您可以通过先隐藏所有子选择,然后再显示所选项目的子选择来避免这种情况。这可以通过这种方式完成(通过附加的name-attribute,或者,如果你选择使用jQuery,你可以做一些更复杂的事情):
JSFiddle 上的示例(带注释)
Javascript:
function fctCheck(food) {
var elems = document.getElementsByName("subselector");
for (var i = 0; i < elems.length; i++) {
elems.item(i).style.display = "none";
}
document.getElementById(food).style.display = "block";
}
.HTML:
<select id="food"onchange="fctCheck(this.value);">
<option value="">Choose an item</option>
<option value="icecream">Ice cream</option>
<option value="crisps">Crisps</option>
</select>
<select id="icecream" name="subselector" style="display:none">
<option value="vanilla">Vanilla</option>
<option value="chocolate">Chocolate</option>
<option value="mint">Mint</option>
</select>
<select id="crisps" name="subselector" style="display:none">
<option value="readysalted">Ready Salted</option>
<option value="cheeseandonion">Cheese and Onion</option>
<option value="saltandvinegar">Salt and Vinegar</option>
</select>
干杯
佛瑞恩
您需要
检查option
值:
fctCheck(this.options[ this.options.selectedIndex ].value)
this.options
是当前<select>
内<option>
元素的集合,this.options.selectedIndex
是显示当前选择的选项的整数值。
顺便说一句,您的代码中有拼写错误:
document.getElementbyId
应该是
document.getElementById
查看 jsFiddle 演示
你只是有一个错字。
function fctCheck(food)
{
if (food == "") {
document.getElementById(food).style.display = "none";}
} else {
document.getElementById(food).style.display = "block";
}
}
应该工作。
this.value
相当于
this.options[this.options.selectedIndex].value
相关文章:
- 基于其他下拉菜单选择隐藏/显示下拉菜单
- 数据表-隐藏/显示列
- $scope变量,ng隐藏/显示
- 隐藏/显示包含单词的ul li项目.但只能入住李的子女
- JQuery隐藏/显示无法正常工作
- 隐藏/显示下面的分区根据是否选择某个选项进行选择
- 使用类而不是id在JavaScript中隐藏显示
- 我想隐藏/显示我的SVG元素,同时在anguarJS中使用它
- 隐藏/显示图像
- Javascript 中的表 - 隐藏/显示列
- 仅使用Javascript隐藏/显示元素,而不会弄乱DOM
- 隐藏/显示 js 代码不会在 IE8 或更低版本上运行
- Magento:根据所选国家/地区隐藏/显示输入字段
- 货到付款选择隐藏/显示付款方式
- "隐藏/显示”;元素和更改按钮背景图像
- Bootstrap Collapse.js切换菜单的隐藏/显示
- 如何隐藏/显示<面板>使用jquery
- 在php中隐藏/显示切换回声结果
- 如何使用jquery使2个按钮切换css,而只使用1个按钮.不显示隐藏/显示
- JQuery隐藏/显示不起作用