onClick изменить цвет текста и вернуться к цвету при нажатии на другой текст

#c# #html #visual-studio-2019

#c# #HTML #visual-studio-2019

Вопрос:

Как переключать цвет между шестью параметрами, например, при нажатии (Home) цвет текста становится красным, а при нажатии (Projects) и при нажатии (Timesheet) цвет становится красным, а другие остаются неизменными и так далее с другими, с помощью Visual Studio asp.netядро 3.1

Код для(_Layout.cshtml)

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - Bearu Firtas</title>
    <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
    <link rel="stylesheet" href="~/css/site.css" />
</head>
<body id="body">
    <header>
        <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-5">
            <div class="container">
                <a class="navbar-brand" asp-area="" asp-page="/Index">Bureau Veritas</a>
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                        aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
                    <ul class="navbar-nav flex-grow-1">
                        <li class="nav-item">
                            <a class="nav-link text-dark color-toggle" asp-area="" asp-page="/Index">Home</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link text-dark color-toggle" asp-area="" asp-page="/Proposel">Proposels</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link text-dark color-toggle" asp-area="" asp-page="/Project">Projects</a>
                        </li>
                        <li class="nav-item"> 
                            <a class="nav-link text-dark color-toggle" asp-area="" asp-page="/TimeSheet">TimeSheet</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link text-dark color-toggle" asp-area="" asp-page="/Report">Reports</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link text-dark color-toggle" asp-area="" asp-page="/Invoice">Invoice By Month</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link text-dark color-toggle" asp-area="" asp-page="/Certificate">Certificates</a>
                        </li>
                    </ul>
                </div>
            </div>
    </nav>
    </header>

    <div class="container">
        <main role="main" class="pb-3">
            @RenderBody()
        </main>
    </div>

    <!--<footer class="border-top footer text-muted">
        <div class="container">
            amp;copy; 2020 - BearuFirtas_App
        </div>
    </footer>-->

    <script src="~/lib/jquery/dist/jquery.min.js"></script>
    <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
    <script src="~/js/site.js" asp-append-version="true"></script>

    @RenderSection("Scripts", required: false)
</body>
</html>
  

код для (site.js )

 const nodes = document.querySelectorAll('.color-toggle');
nodes.forEach((node) => {
    node.addEventListener('click', (e) => {
        nodes.forEach(ele => {
            if (ele === e.target) {
                ele.style.color = 'red'
            } else {
                ele.style.color = 'black'
            }
        })
    })
})
  

Изображение макета,

изображение макета

Комментарии:

1. Итак, вы в основном хотите выделить текст, на который нажимается, а другой должен оставаться в состоянии по умолчанию.

2. как только я нажимаю на текст (например, щелкая на «Домашней» странице), он меняет свой цвет на красный, а с другой стороны, когда я нажимаю на другой текст (например, щелкая на странице «Проекты»), он меняет свой цвет на красный, но в то же время, «Домашний» текст возвращается к своему черному цвету и так далее.

3. Понял, я добавлю ответ ниже

4. Теперь я добавил ответ

Ответ №1:

Вам нужно добавить color-toggle класс на все эти вкладки в панели навигации и включить приведенный ниже скрипт,

 const nodes = document.querySelectorAll('.color-toggle');
nodes.forEach((node) => {
  node.addEventListener('click', (e) => {
    nodes.forEach(ele => {
      if(ele === e.target){
        ele.style.color = 'red !important'
      } else {
        ele.style.color = 'black !important'
      }
    })
  })
})  
 <div class="color-toggle">Home</div>
<div class="color-toggle">Projects</div>
<div class="color-toggle">Section 3</div>
<div class="color-toggle">Others</div>  

Обновление 1: согласно комментарию, при использовании кода для <a> тега вы должны использовать !important , чтобы переопределить стиль <a> тега по умолчанию.

Комментарии:

1. например, когда я добавляю переключатель цвета в этот код, это ничего не меняет на запущенном веб-сайте. <div class=»панель навигации-свернуть свернуть d-sm-inline-flex flex-sm-row-reverse»> <ul class=»navbar-nav flex-grow-1″> <li class=»nav-item»>темный цвет — переключить » asp-area=»» asp-page=»/Index»>Home</a> </ li> </ div>

2. Я мог бы помочь вам гораздо лучше, если бы вы поделились немного большей частью кода, т.Е. с большим количеством вкладок, чтобы я мог воспроизвести ошибку и попытаться ее исправить

3. я отредактировал приведенный выше код в качестве вашего решения, цвет меняется только при добавлении <div class=color-toggle>Home</div> , но при добавлении»> Главная страница </a> это не работает при нажатии на вкладку.

4. Я обновил код, попробуйте использовать это, также дал объяснение для вашей ссылки.

Ответ №2:

добавьте что-то подобное в свой js:

 document.getElementById("home").addEventListener("click", Red, false) //add id home to your home button
document.getElementById("projects").addEventListener("click", Black, false)//add id projects to your home button
document.getElementById("timestamp").addEventListener("click", Blue, false)//add id home to your timestamp button

function Red () {
  document.getElementById("body).style.color = "red";
}
function Black () {
  document.getElementById("body).style.color = "black";
}
function Blue () {
  document.getElementById("body).style.color = "blue";
}