我需要在单击时设置活动按钮。我正在使用引导程序

问题描述 投票:0回答:1

尽管我尝试了所有方法,但它似乎并没有被覆盖。我尝试了很多不同的方法,比如摆弄 CSS,但似乎没有任何效果。我正在使用引导5

document.addEventListener("DOMContentLoaded", function() {
  const notesButton = document.getElementById('notes');
  const tasksButton = document.getElementById('tasks');

  notesButton.addEventListener('click', function() {
    notesButton.classList.add('active');
    tasksButton.classList.remove('active');
  });

  tasksButton.addEventListener('click', function() {
    tasksButton.classList.add('active');
    notesButton.classList.remove('active');
  });
});
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
  <link rel="stylesheet" href="styles/main.css" />
  <title>Trackz</title>
</head>
<header>
  <div class="container-fluid mt-3">
    <nav class="navbar tabar mx-5">
      <div class="container-fluid">
        <a class="navbar-brand mx-4 text_color" href="/">
                Trackz
            </a>
        <div class="d-flex">
          <a href="/"><button class="btn btn-outline-light mx-2" id="notes">Notes</button></a>
          <a href="/Tasks"><button class="btn btn-outline-light mx-2" id="tasks">Tasks</button></a>
        </div>
      </div>
    </nav>
  </div>
</header>

html css bootstrap-5
1个回答
0
投票

由于您的按钮被包裹在导航到不同页面的锚标记中(

href="/"
href="/Tasks"
),单击它们自然会导致浏览器导航离开,从而不会在按钮上直观地保留活动状态。

您可以使用

preventDefault()
,但这没有意义,因为您根本可以不使用锚标记。

我强烈建议集体讨论您想要实现的行为,并在此基础上更改您的 HTML 结构。

无论如何,这里有一个片段,添加了您想要的功能

preventDefault()

    document.addEventListener("DOMContentLoaded", function() {
  const notesButton = document.getElementById('notes');
  const tasksButton = document.getElementById('tasks');

  notesButton.addEventListener('click', function(event) {
    event.preventDefault();  // Prevent the page navigation
    notesButton.classList.add('active');
    tasksButton.classList.remove('active');
  });

  tasksButton.addEventListener('click', function(event) {
    event.preventDefault();  // Prevent the page navigation
    tasksButton.classList.add('active');
    notesButton.classList.remove('active');
  });
});
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script>
  <link rel="stylesheet" href="styles/main.css" />
  <title>Trackz</title>
</head>
<header>
  <div class="container-fluid mt-3">
    <nav class="navbar tabar mx-5">
      <div class="container-fluid">
        <a class="navbar-brand mx-4 text_color" href="/">
                Trackz
            </a>
        <div class="d-flex">
          <a href="/"><button class="btn btn-outline-light mx-2" id="notes">Notes</button></a>
          <a href="/Tasks"><button class="btn btn-outline-light mx-2" id="tasks">Tasks</button></a>
        </div>
      </div>
    </nav>
  </div>
</header>

© www.soinside.com 2019 - 2024. All rights reserved.