javascript - 根据选择显示 div
问题描述
首先,我以前从来没有真正玩过 Javascript,除了找到你聪明的类型创建的东西,然后将它添加到我的网站。
我想根据页面下拉菜单中选择的选项显示一个 div。
我有关税 1 - 4,选择的关税显示为 t1、t2、t3 和 t4,但 Divs 然后不可见。
我已经用一个简单的按钮测试了 div 位的显示/隐藏功能,并且效果很好,我似乎无法让它选择变量来显示被选中的那个。
<div>
Value Selected: <span id="current"></span>
<br>
<br>
<select id="select" name="options">
<option>Choose Your Option</option>
<option value="t1"> 1</option>
<option value="t2"> 2</option>
<option value="t3"> 3</option>
<option value="t4"> 4</option>
</select>
<div class="t1"><p>Tariff 1</p></div>
<div class="t2"><p>Tariff 2</p></div>
<div class="t3"><p>Tariff 3</p></div>
<div class="t4"><p>Tariff 4</p></div>
</div>
function showSelectedItem() {
var item = document.getElementById("select").value;
document.getElementById("current").innerHTML = item;
if (item.style.display === 'none') {
item.style.display = 'block';
} else {
item.style.display = 'none';
}
}
document.getElementById("select").addEventListener("change", showSelectedItem);
那么所有 t1, t2... div 的 css 是
.t1 {显示:无}
在此先感谢,当您知道自己在看什么时,我怀疑它非常明显。
解决方案
Youe css styles wont be avaliable with item.style.display
. Only the inline styles will be available with the above selector.
Logic
- Make all nodes hidden initially with
style="display:none"
in HTML - On change, check the selected value.
- Hide all nodes with class name which is not same as selected value.
- If you want to hide the dropdown when the user selects an option, you could select the dropdown with
document.getElementById("select")
and setstyle.display = 'none'
function showSelectedItem() {
var item = document.getElementById("select").value;
document.getElementById("current").innerHTML = item;
const classes = ['t1', 't2', 't3', 't4'];
// Toggle visibility;
classes.forEach((classNode) => {
document.querySelector(`.${classNode}`).style.display = classNode === item ? 'block': 'none';
});
// Hide the dropdown when the user selects an option
document.getElementById("select").style.display = "none";
}
document.getElementById("select").addEventListener("change", showSelectedItem);
<div>
Value Selected: <span id="current"></span>
<br>
<br>
<select id="select" name="options">
<option>Choose Your Option</option>
<option value="t1"> 1</option>
<option value="t2"> 2</option>
<option value="t3"> 3</option>
<option value="t4"> 4</option>
</select>
<div class="t1" style="display: none;">
<p>Tariff 1</p>
</div>
<div class="t2" style="display: none;">
<p>Tariff 2</p>
</div>
<div class="t3" style="display: none;">
<p>Tariff 3</p>
</div>
<div class="t4" style="display: none;">
<p>Tariff 4</p>
</div>
</div>
If you want the css styles also to be reflfced with your script, you have to make use of Window.getComputedStyle()
Reference
function showSelectedItem() {
var item = document.getElementById("select").value;
document.getElementById("current").innerHTML = item;
const selectedNode = document.querySelector(`.${item}`);
if (selectedNode) {
const displayValue = window.getComputedStyle(selectedNode).display;
const classes = ['t1', 't2', 't3', 't4'];
classes.forEach((classNode) => {
document.querySelector(`.${classNode}`).style.display = classNode === item ? 'block': 'none';
});
// Hide the dropdown when the user selects an option
document.getElementById("select").style.display = "none";
}
}
document.getElementById("select").addEventListener("change", showSelectedItem);
.t1, .t2, .t3, .t4 {
display: none;
}
<div>
Value Selected: <span id="current"></span>
<br>
<br>
<select id="select" name="options">
<option>Choose Your Option</option>
<option value="t1"> 1</option>
<option value="t2"> 2</option>
<option value="t3"> 3</option>
<option value="t4"> 4</option>
</select>
<div class="t1">
<p>Tariff 1</p>
</div>
<div class="t2">
<p>Tariff 2</p>
</div>
<div class="t3">
<p>Tariff 3</p>
</div>
<div class="t4">
<p>Tariff 4</p>
</div>
</div>
推荐阅读
- python - TypeError:“模块”对象不可调用(Bybit API)
- flutter - 生成器无法定位尚未迁移到空安全的库
- postgresql - Postgres 从嵌套子查询选择语句返回多行
- python - 使用 scipy.optimize.brute 全局最小化多变量
- php - 从亚马逊网址获取产品数据
- bash - 无法使明显简单的 bash 功能工作
- json - 客户端检查所有前缀是否正确存储在 JSON 文件中。不和谐.py
- excel - 打开太多窗口以进行身份验证
- javascript - 当用户导航到其他页面并返回时不清除表单数据
- google-client - 使用 Google Drive Remote 进行数据版本控制:“googleapiclient.errors.UnknownApiNameOrVersion: name: drive version: v2”