将 .className 添加到对象不起作用

Mik*_*ike 6 javascript twitter-bootstrap

我正在尝试将 className 设置为我的导航元素,但它没有按预期工作。当我手动将类添加到我的 HTML 时,它会在无序列表项和按钮周围放置一个边框。当我使用 js 添加它时,它显示 nav 标签在检查器中具有该属性,但它没有添加边框,所以我不相信它正在工作。我究竟做错了什么?我已经链接到文件中的 bootstrap cdn 和 jquery cdn。

HTML
<!doctype html>
  <html lang="en-us">
    <head>
      <title>Exercise 5.9</title>
      <meta charset="UTF-8">
      <meta equiv="X-UA-Compatible" content="IE=Edge">
    </head>
    <body id="content">
    <!-- Latest compiled and minified CSS -->
    <script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
    <nav>
      <div>
        <ul>
          <li>Home</li>
          <li>Our Policies</li>
          <li>How you can help</li>
          <li>What we have accomplished</li>
          <button type="button">Donate $10.00</button>
          <button type="button">Donate $50.00</button>
          <button type="button">Donate $100.00</button>
        </ul>
      </div>
    </nav>
        <p>If you would to offer financial support, please choose the buttons above</p>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
        <script src="exercise-5.9.js"></script>
  </body>
</html>

JS
var nav = document.getElementsByTagName("nav");
nav.className = "navbar navbar-default";
console.log(nav);
Run Code Online (Sandbox Code Playgroud)

mwi*_*son 6

而不是使用.className =尝试只是将属性设置为class您想要的任何内容。然而,它不工作的主要原因是因为.getElementsByTagName()返回一个数组 (nodeList),因此您需要确保在设置类时,它已正确索引。

使用 .setAttribute("atr", "value")

var button = document.getElementById("btnGo");

button.onclick = function () {
    var nav = document.getElementsByTagName("nav");

    for (var i = 0; i < nav.length; i++) {
        nav[i].setAttribute("class", "myClassName");
    }

};
Run Code Online (Sandbox Code Playgroud)

使用 .className

var button = document.getElementById("btnGo");

button.onclick = function () {
    var nav = document.getElementsByTagName("nav");

    for (var i = 0; i < nav.length; i++) {
        nav[i].className = "myClass";
    }

};
Run Code Online (Sandbox Code Playgroud)