在JavaScript中动态更改类名

Arj*_*jun 4 javascript

我有一个简单的HTML菜单:

<ul id="menu">
    <li><a id="admin" onclick="changeActive('admin');" class="active a red">Admin</a></li>
    <li><a id="dash" onclick="changeActive('dash');" class="a black">Dash</a></li>
    <li><a id="notifs" onclick="changeActive('notifs');" class="a black">Notifs</a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我们的想法是动态更改活动元素.

我目前的职能是:

function changeActive(id)
    {
      document.getElementById(id).className += "active a red";
      var c = document.querySelectorAll("ul a");
      for (i in c)
      {
        fav = c[i].attributes[0];
        if(fav.value!=id)
          {
            console.log(fav.value);
            document.getElementById(fav.value).className += "a black";
          }
      }
    }
Run Code Online (Sandbox Code Playgroud)

有更有效的解决方案吗?谢谢!

Har*_*ane 5

请注意我已删除,+=因此您不必每次都添加相同的类.

function changeActive(id) {
      var c = document.querySelectorAll("ul a");
      var i;
      for (i in c) {
        c[i].className = 'a black';
      }
      //update it at last
      document.getElementById(id).className = "active a red";
}
Run Code Online (Sandbox Code Playgroud)