简体   繁体   English

为什么我的 bootstrap 下拉按钮不起作用?

[英]Why is my bootstrap dropdown button not working?

When an option is selected on the dropdown menu, it does not change on the button even after pressing it.当在下拉菜单中选择一个选项时,即使在按下按钮后它也不会改变。 I tried console logging it on javascript as well but it doesn't print and instead shows the following error on chrome inspector:我也尝试在 javascript 上进行控制台记录,但它不打印,而是在 chrome 检查器上显示以下错误:

index.js:26 Uncaught TypeError: Cannot read property 'value' of null
    at getSelectValue (index.js:26)
    at index.js:29

My html is:我的 html 是:

<!DOCTYPE html>
<html lang="en" dir="ltr">

<head>
  <meta charset="utf-8">
  <title>Titlee</title>

  <!-- Favicon -->
  <link rel="short icon" type="image" href="dicelogo.png">

  <!-- Bootstrap, CSS -->
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
  <link rel="stylesheet" href="styles.css">

  <!-- Google Font -->
  <link href="https://fonts.googleapis.com/css2?family=PT+Mono&display=swap" rel="stylesheet">
  <link href="https://fonts.googleapis.com/css?family=Indie+Flower|Lobster" rel="stylesheet">

  <!-- Jquery Links -->
  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</head>

<body>
  
  <div class="container-fluid user-interaction">
    <h1>How to play?</h1>
    <h5>Write down your choices here (you can choose up to 4):</h5>


    <!-- Dropdown Button -->
    <div class="dropdown">
      <button class="btn btn-info dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
        2
        <span class="caret"></span>
      </button>
      <ul id="list" class="dropdown-menu dropdown-info" onchange="getSelectedValue();" aria-labelledby="dropdownMenu1">
        <li><a href="#">2</a></li>
        <li><a href="#">3</a></li>
        <li><a href="#">4</a></li>
      </ul>
    </div>
    <input type="text" name="" value="" placeholder="">
  </div>


  <script src="index.js" charset="utf-8">
  </script>
</body>

<footer>
  😊 Thanks for playing 😊
</footer>



</html>

And my javascript is:我的 javascript 是:

// Default Dice
// 1st image
var randomNumber1 = Math.floor(Math.random() * 6 + 1);
var Image1 = "dice" + randomNumber1 + ".png";
document.querySelectorAll("img")[1].setAttribute("src", Image1);

// 2nd image
var randomNumber2 = Math.floor(Math.random() * 6 + 1);
var Image2 = "dice" + randomNumber2 + ".png";
document.querySelectorAll("img")[2].setAttribute("src", Image2);

// 3rd image
var randomNumber3 = Math.floor(Math.random() * 6 + 1);
var Image3 = "dice" + randomNumber3 + ".png";
document.querySelectorAll("img")[3].setAttribute("src", Image3);

// 4th image
var randomNumber3 = Math.floor(Math.random() * 6 + 1);
var Image4 = "dice" + randomNumber3 + ".png";
document.querySelectorAll("img")[4].setAttribute("src", Image4);

var diceNumbers = []

// selectedNumber
function getSelectValue() {
  var selectedValue = document.getElementById("list").value;
  console.log(selectedValue);
}
getSelectValue();


// Determining Winner

How do I make the chosen number be selected and printed on console log?如何选择所选号码并将其打印在控制台日志中? Thanks in advance提前致谢

Bootstrap's dropdown just looks similiar to html select , but it behaves differently. Bootstrap 的下拉菜单看起来与 html select类似,但行为不同。 You need to write scripts to handle the click event on each li element.您需要编写脚本来处理每个li元素上的click事件。

I imagine you'd want something like this:我想你会想要这样的东西:

 let links = document.querySelectorAll('#list li') links.forEach((el) => { el.addEventListener('click', (event) => { let val = event.target.innerText document.getElementById('dropdownMenu1').innerHTML = `${val}<span class="caret"></span>` console.log(val) }) })
 <,-- Bootstrap: CSS --> <link rel="stylesheet" href="https.//stackpath.bootstrapcdn.com/bootstrap/4.5.0/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous"> <link rel="stylesheet" href="styles:css"> <.-- Google Font --> <link href="https.//fonts?googleapis:com/css2.family=PT+Mono&display=swap" rel="stylesheet"> <link href="https.//fonts?googleapis:com/css.family=Indie+Flower|Lobster" rel="stylesheet"> <.-- Jquery Links --> <script src="https.//code.jquery.com/jquery-3.3.1:slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https.//cdnjs.cloudflare.com/ajax/libs/popper.js/1.14:7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script> <script src="https.//stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script> <!-- Dropdown Button --> <div class="dropdown"> <button class="btn btn-info dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> 2 <span class="caret"></span> </button> <ul id="list" class="dropdown-menu dropdown-info" aria-labelledby="dropdownMenu1"> <li><a href="#">2</a></li> <li><a href="#">3</a></li> <li><a href="#">4</a></li> </ul> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM