Проблемы с вкладками - PullRequest
       0

Проблемы с вкладками

3 голосов
/ 29 февраля 2020

Мне нужна помощь с вкладками. Когда выбрана первая кнопка, цвет фона серый, а текст на первой кнопке белый, что нормально, но на моей второй кнопке цвет фона серо-белый, а текст белый. Я хочу добавить серый текст для этой второй кнопки?

HTML:

<button class="tablink" id="defaultOpen" onclick="openPage('Home', this, '#6D6E70')">First Button</button>
<button class="tablink" onclick="openPage('News', this, '#6D6E70')">Second Button</button>

<div id="Home" class="tabcontent">
  <h3>Home</h3>
  <p>Home is where the heart is..</p>
</div>

<div id="News" class="tabcontent">
  <h3>News</h3>
  <p>Some news this fine day!</p>
</div>

CSS:

.tablink {
  display: inline-block;
    min-width: 128px;
    font-size: 16px;
    padding: 8px;
    color: #fff;
    font-weight: 500;
    text-decoration: none;
    background-color: #F2F2F2;
}

.tablink:hover {
  background-color: #777;
}

/* Style the tab content (and add height:100% for full page content) */
.tabcontent {
  color: white;
  display: none;
  padding: 100px 20px;
  height: 100%;

}

Java Сценарий:

<script>
function openPage(pageName,elmnt,color) {
  var i, tabcontent, tablinks;
  tabcontent = document.getElementsByClassName("tabcontent");
  for (i = 0; i < tabcontent.length; i++) {
    tabcontent[i].style.display = "none";
  }
  tablinks = document.getElementsByClassName("tablink");
  for (i = 0; i < tablinks.length; i++) {
    tablinks[i].style.backgroundColor = "";
  }
  document.getElementById(pageName).style.display = "block";
  elmnt.style.backgroundColor = color;

}
// Get the element with id="defaultOpen" and click on it
document.getElementById("defaultOpen").click();
</script>

Я пытаюсь добавить к java код сценария в document.getElementsByClassName("tablink")

tablinks[i].style.color = "#fff";

Но не работает

1 Ответ

1 голос
/ 29 февраля 2020

Если вы хотите изменить цвет текста второй кнопки после нажатия на нее, вы можете просто добавить эту строку:

if (pageName === 'News') {
  elmnt.style.color = 'black';
}

Вот JSfiddle .

Однако вы Было бы лучше использовать CSS, чтобы правильно оформить эти элементы так, как вы хотите. Дайте мне знать, если вам понадобится дальнейшая помощь в этом.


РЕДАКТИРОВАТЬ:

Поскольку было выяснено, чего вы пытаетесь достичь, лучшим способом решения вашей проблемы будет быть делать это путем переключения классов. Вот JSfiddle .

По сути, я добавил два дополнительных класса .selected и .visible, один для кнопок, другой для div, например:

HTML:

<button class="tablink selected" onclick="openPage('Home', this)">First Button</button>
/* ... */
<div id="Home" class="tabcontent visible">
  <h3>Home</h3>
  <p>Home is where the heart is..</p>
</div>

CSS:

.tablink.selected {
  color: #fff;
  background-color: #6D6E70;
}
.tabcontent.visible {
  display: block;
}

И сократил ваш JS код:

function openPage(pageName, elmnt) {
  document.querySelector('.tablink.selected').classList.remove('selected');
  elmnt.classList.add('selected');

  document.querySelector('.tabcontent.visible').classList.remove('visible');
  document.getElementById(pageName).classList.add('visible');
}

Так что, когда вы нажимаете, это выглядит для выбранного / видимого элемента удаляет эти дополнительные классы и добавляет их обратно к нажатой кнопке и соответствующему элементу div.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...