【发布时间】:2019-11-25 14:00:07
【问题描述】:
我非常熟悉使用 Angular 时有条件地隐藏或显示元素。我对直接使用 HTML 和 JS 不太熟悉。我有一个使用 twitter-bootstrap 3.4.0 的 HTML 页面。对于这个 HTML 页面,我最初想显示一个主下拉菜单。然后,根据用户所做的选择,我想有条件地显示几个二级下拉菜单之一。这是我的主下拉菜单 HTML:
<div class="dropdown">
<button class="btn btn-default btn-primary dropdown-toggle" type="button" data-toggle="dropdown"
onclick="loadCategoryList()">
Select Job Category
<span class="caret"></span>
</button>
<ul class="dropdown-menu" id="selectCategory"></ul>
</div>
这里是被引用的 JS:
let selectCat = document.getElementById("selectCategory");
// Load category list into drop-menu
async function loadCategoryList() {
const categoryArr = ["option 1", "option 2", "option 3", "emailer"];
while (selectCat.firstChild) {
selectCat.removeChild(selectCat.firstChild);
}
for (let i = 0; i < categoryArr.length; i++) {
let opt = categoryArr[i];
let a = document.createElement("a");
a.textContent = opt;
a.setAttribute('href', '#');
a.setAttribute('class', 'btn btn-link');
let li = document.createElement("li");
li.appendChild(a);
selectCat.appendChild(li);
}
}
然后我有一个二级下拉菜单 div 节点,如下所示:
<div class="dropdown">
<button class="btn btn-default btn-primary dropdown-toggle" type="button" data-toggle="dropdown"
onclick="loadEmailersList()">
Select Email Type
<span class="caret"></span>
</button>
<ul class="dropdown-menu" id="selectEmailer"></ul>
</div>
我想要做的改变是,如果从主类别列表下拉菜单中选择的是“emailer”,我只想显示这个辅助“emailer”div 节点。换句话说,“emailer”下拉菜单节点应该被隐藏,并且只有在主类别列表下拉菜单中的选择等于“emailer”时才可见。
我不清楚这种情况在 HTML 和 JS 中发生了多少。如何使用 HTML、JS 和 Bootstrap 完成此任务?
【问题讨论】:
-
Hey Muirik ????,您是否有机会将其压缩成一个稍小的 sn-p 或在有问题的地方发表评论。如果您可以将其作为可运行堆栈 sn-p 注入,则可以加分 :)
-
我使用的是 Bootstrap 3.4.0。我减小了 sn-p 的大小。基本上,如果用户从初始下拉菜单列表中选择“emailer”,我只希望显示“emailer”的 div 节点。最初,否则它应该保持隐藏状态。
-
例如,这是一个 pastbin 的堆栈 sn-p 启动器,您可以将其包含在您的答案中。但是如果你这样做,你会发现很难运行(因此可能会调试)。如果您可以使其进入可运行状态,那将非常有帮助
-
我在上面进行了更改,以便您可以看到菜单项数组。
-
我现在已经把它拿出来了。这只会在辅助下拉菜单中用于将值填充到文本字段中。
标签: javascript html twitter-bootstrap-3