javascript - 使用 JavaScript 从数组填充下拉菜单

标签 javascript html twitter-bootstrap

我需要通过 JavaScript 从数组动态生成下拉菜单列表。我已经很接近了,但是虽然我可以将数组元素填充到显示在我的index.html 页面上的启用Bootstrap 的下拉菜单中,但我无法选择那些显示为下拉菜单项的单个元素。我需要编辑代码,以便单击其中一个元素并运行第二个函数,将选择内容填充到输入字段。

首先,这是我迭代数组的脚本:

  <script>
    let select = document.getElementById("selectJob");
    let options = ["Job 1", "Job 2", "Job 3", "Job 4", "Job 5"];
    for (let i = 0; i < options.length; i++) {
      let opt = options[i];
      let el = document.createElement("option");
      el.textContent = opt;
      el.value = opt;
      select.appendChild(el);
    }

  </script>

这是我使用的第二个脚本:

  <script>
    function populateJobVal(val) {
      document.getElementById("selection").value = val;
    }
  </script>

这是我的 HTML 中的下拉菜单部分,我正在尝试使用它:

  <div class="dropdown">
    <button class="btn btn-default btn-primary dropdown-toggle" type="button" data-toggle="dropdown">
      Select Job Type to Schedule
      <span class="caret"></span></button>
    <ul class="dropdown-menu" id="selectJob">
      <li>
        <a href="#" role="button" onclick="populateJobVal(selectJob)" class="btn btn-link">
        </a>
      </li>
    </ul>
  </div>

请注意,我将“id”添加到 <ul>元素。应该去别的地方吗?我确实尝试将“id”放在 <li> 上元素,但这使得所有数组元素成为一个可点击字段,而不是每个元素都可点击。

现在,当我单击下拉菜单按钮时,确实会出现不同的作业。但是,它们不可单独点击。

我需要在代码中编辑哪些内容才能使每个元素成为可点击的链接?

最佳答案

要匹配您的模板,您需要执行以下操作:

  let select = document.getElementById("selectJob");
    let options = ["Job 1", "Job 2", "Job 3", "Job 4", "Job 5"];
    for (let i = 0; i < options.length; i++) {
      let opt = options[i];
      let a = document.createElement("a");
      a.textContent = opt;
      a.setAttribute('href', '#');
      a.setAttribute('onclick', 'populateJobVal(selectJob)');
      a.setAttribute('class', 'btn btn-link');
      let li = document.createElement("li");
      li.appendChild(a);
      select.appendChild(li);
    } 
 
 function populateJobVal(val) {
      document.getElementById("selection").value = val;
    }
<div class="dropdown">
    <button class="btn btn-default btn-primary dropdown-toggle" type="button" data-toggle="dropdown">
      Select Job Type to Schedule
      <span class="caret"></span></button>
    <ul class="dropdown-menu" id="selectJob">
    </ul>
  </div>

关于javascript - 使用 JavaScript 从数组填充下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58736790/

相关文章:

javascript - 幻灯片更改时更改 Bootstrap 的轮播箭头颜色

javascript - 在浏览器滚动之前滚动不可见元素

javascript - 创建新函数并传递参数而不调用它

javascript - 使用javascript在div标签中附加表格

html - 我怎样才能修复这个用 twitter bootstrap 构建的布局

html - 扩展更多列以适应 Bootstrap 中较少列的宽度

javascript - jQuery 发布类似问题

javascript - Woocommerce 产品选项有条件

html - <li> 菜单中的链接垂直居中

html - 图片和文字没有正确对齐