javascript - 如何根据所选值在同一位置隐藏和显示下拉菜单?
问题描述
我列出了 4 个下拉列表,但我想一次只显示一个。它基于选定的值,但是当我尝试显示下拉列表时,它不会被另一个替换它只是在第一个下拉列表旁边可见。
我想在同一个地方有一个下拉位置,只有值应该改变。我怎样才能做到这一点。?
代码 :
document.getElementById("one").style.visibility = "visible";
document.getElementById("two").style.visibility = "hidden";
document.getElementById("three").style.visibility = "hidden";
document.getElementById("four").style.visibility = "hidden";
function checklistChange()
{
if (document.getElementById("productType").value==4068 && document.getElementById("C").checked)
{
document.getElementById("one").style.visibility = "hidden";
document.getElementById("three").style.visibility = "hidden";
document.getElementById("four").style.visibility = "hidden";
document.getElementById("two").style.visibility = "visible";
}
else if(document.getElementById("productType").value==4068 && document.getElementById("S").checked)
{
document.getElementById("one").style.visibility = "hidden";
document.getElementById("two").style.visibility = "hidden";
document.getElementById("four").style.visibility = "hidden";
document.getElementById("three").style.visibility = "visible";
}
}
<table>
<tr>
<td>
<p>Product Type : </p>
</td>
<td><select id="productType">
<option value=4068>Af only</option>
<option value=4069>Multi</option>
</select></td>
</tr>
<tr>
<td>
<p>Plan Type : </p>
</td>
<td><input id="S" name="planType" type="radio" value='S' checked="true">StartUp
<input id="C" name="planType" type="radio" value='C'>Conversion
</td>
</tr>
</table>
<table>
<tr><td><p>Checklist: </p></td>
<td>
<select id="one" onclick="checklistChange()">
<option value=1>India</option>
<option value=2>America</option>
<option value=3>England</option>
<option value=4>SriLanka</option>
<option value=5>Bangladesh</option>
</select>
<select id="two">
<option value=5>Africa</option>
<option value=6>Nepal</option>
<option value=7>Wens</option>
<option value=8>Brazil</option>
<option value=9>Bhootan</option>
</select>
<select id="three">
<option value=10>Crotia</option>
<option value=11>Pune</option>
<option value=12>Chiplun</option>
<option value=13>Chakan</option>
<option value=14>Bangladesh</option>
</select>
<select id="four">
<option value=15>PimpeiChainhwad</option>
<option value=16>Pune</option>
<option value=17>Paud</option>
<option value=18>Mumbai</option>
<option value=19>Bangladesh</option>
</select>
</td></tr></table>
解决方案
使用 display: none 代替 visibility: hidden 和 display: block 代替 visibility: visible。可见性只会隐藏(而不是删除)元素。当用户实际选择他们想要的计划类型时,您还需要调用 checklistChange 以便您的显示更新。
我可以建议进行更多更改以使其更可用,但是如果不能 100% 确定您想要什么功能,就很难说。我还注意到文档的标题,所以我假设您对 JS 比较陌生。
<HTML>
<head> <title>JS PRACTICE</title></head>
<body>
<table>
<tr>
<td>
<p>Product Type : </p>
</td>
<td><select id="productType">
<option value=4068>Af only</option>
<option value=4069>Multi</option>
</select></td>
</tr>
<tr>
<td>
<p>Plan Type : </p>
</td>
<td><input id="S" onclick="checklistChange()" name="planType" type="radio" value='S' checked="true">StartUp
<input id="C" onclick="checklistChange()" name="planType" type="radio" value='C'>Conversion
</td>
</tr>
</table>
<table>
<tr><td><p>Checklist: </p></td>
<td>
<select id="one" onchange="checklistChange()">
<option value=1>India</option>
<option value=2>America</option>
<option value=3>England</option>
<option value=4>SriLanka</option>
<option value=5>Bangladesh</option>
</select>
<select id="two">
<option value=5>Africa</option>
<option value=6>Nepal</option>
<option value=7>Wens</option>
<option value=8>Brazil</option>
<option value=9>Bhootan</option>
</select>
<select id="three">
<option value=10>Crotia</option>
<option value=11>Pune</option>
<option value=12>Chiplun</option>
<option value=13>Chakan</option>
<option value=14>Bangladesh</option>
</select>
<select id="four">
<option value=15>PimpeiChainhwad</option>
<option value=16>Pune</option>
<option value=17>Paud</option>
<option value=18>Mumbai</option>
<option value=19>Bangladesh</option>
</select>
</td></tr></table>
<script>
document.getElementById("one").style.display = "block";
document.getElementById("two").style.display = "none";
document.getElementById("three").style.display = "none";
document.getElementById("four").style.display = "none";
function checklistChange()
{
if (document.getElementById("productType").value=="4068" && document.getElementById("C").checked)
{
document.getElementById("one").style.display = "none";
document.getElementById("two").style.display = "block";
document.getElementById("three").style.display = "none";
document.getElementById("four").style.display = "none";
}
else if(document.getElementById("productType").value=="4068" && document.getElementById("S").checked)
{
document.getElementById("one").style.display = "none";
document.getElementById("two").style.display = "none";
document.getElementById("four").style.display = "none";
document.getElementById("three").style.display = "block";
}
}
</script>
</body>
</HTML>
推荐阅读
- javascript - 将 HTML 字符串转换为有组织的对象
- node.js - 开玩笑 - 多次使用不同的测试设置运行一个测试模块
- c# - 暂时隐藏/删除 ComboBox 项目
- python - 如何将网页抓取输出格式化为 CSV 中的表格?
- api - 如何合并来自两个分页源 API 的数据并将其暴露在另一个分页 Restful API 上?
- django - Django 更新类表单(删除表单输入标题)
- c# - 调用、BeginInvoke / EndInvoke 还是 InvokeAsync?什么时候用什么,为什么用?
- c# - 如何通过 CSV Helper 将 CSV 解析为我的自定义类 IFormFile .Net Core c#
- java - Spring响应实体在浏览器中不起作用但在邮递员中起作用
- python - Kivy Python:将变量和实例从类(屏幕)传递到另一个类(屏幕)