显示下拉菜单中选择的内容:引导程序

时间:2019-07-16 10:00:52

标签: javascript html bootstrap-4

我有以下HTML

<!DOCTYPE html>
<html>
<head>
  <title>Bootstrap Example</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  <div class="dropdown">
    <button type="button" class="btn btn-warning dropdown-toggle" data-toggle="dropdown">
      Dropdown button
    </button>
    <div id="custom" class="dropdown-menu">
      <a class="dropdown-item" href="#">Normal</a>
      <a class="dropdown-item" href="#">Active</a>
      <a class="dropdown-item" href="#">Disabled</a>
    </div>
  </div>
</div>

<script>
document.getElementById('custom').addEventListener("click", myFunction);

function myFunction() {
  alert(this.textContent);
}
</script>

</body>
</html>

我正在尝试alert并将button文本设置为drop-down中选择的内容。

我可以通过将ID设置为dropdown-item并在JS中读取它来获取值。但是我有n个dropdown-item,所以添加id是不可行的。

jQuery中有可用的解决方案,但是如果不使用jQuery怎么办呢? ?

4 个答案:

答案 0 :(得分:1)

您可以访问目标元素的innerHTMLinnerText属性:

document.getElementById('custom').addEventListener("click", myFunction);

function myFunction(e) {
  alert(e.target.innerText);
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>

<div class="container">
  <div class="dropdown">
    <button type="button" class="btn btn-warning dropdown-toggle" data-toggle="dropdown">
      Dropdown button
    </button>
    <div id="custom" class="dropdown-menu">
      <a class="dropdown-item" href="#">Normal</a>
      <a class="dropdown-item" href="#">Active</a>
      <a class="dropdown-item" href="#">Disabled</a>
    </div>
  </div>
</div>

答案 1 :(得分:1)

从您的查询中,我怀疑您要访问下拉单击事件中的下拉菜单的选定项。

您可以从click事件参数(即 e.target )中获取选定的元素。因此,您可以轻松地从该元素访问选定的元素文本(即 e.target.text )。

答案 2 :(得分:1)

<!DOCTYPE html>
<html>
<head>
  <title>Bootstrap Example</title>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
</head>
<body>

<div class="container">
  <div class="dropdown">
    <button type="button" id="dropdown-button" class="btn btn-warning dropdown-toggle" data-toggle="dropdown">
      Dropdown button
    </button>
    <div id="custom" class="dropdown-menu">
      <a class="dropdown-item" href="#">Normal</a>
      <a class="dropdown-item" href="#">Active</a>
      <a class="dropdown-item" href="#">Disabled</a>
    </div>
  </div>
</div>

<script>
document.getElementById('custom').addEventListener("click", myFunction);

function myFunction() {
  document.getElementById('dropdown-button').innerText = event.target.innerText;
}
</script>

</body>
</html>

答案 3 :(得分:0)

您可以获取链接的父元素。 我的意思是,您可以通过javascript代码获得“ #custom”元素。

var parElement = document.getElementByID(“#custom”); //将返回元素。

您可以通过调用

获取自定义元素的子元素

parElement.childNodes //这将返回子节点。

可以获得子节点的长度,因此可以完全控制链接。