javascript innerHTML, если classList содержит это - PullRequest
0 голосов
/ 07 марта 2019

Я хочу отредактировать элемент абзаца -

<p id="individualDescription"></p>

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

В настоящее время я использую classList.contains, чтобы проверить, есть ли у элемента класс и innerHTML для записи в абзаце.

JS:

var slideIndex1 = document.querySelector('#firstSlide');
var slideIndex2 = document.querySelector('#secondSlide');
var slideIndex3 = document.querySelector('#thirdSlide');
var slideIndex4 = document.querySelector('#fourthSlide');
var workoutDescription = document.querySelector('#individualDescription');

if (slideIndex1.classList.contains('active')) {
  workoutDescription.innerHTML = 'This is Slide 1';
} else if (slideIndex2.classList.contains('active')) {
  workoutDescription.innerHTML = 'This is Slide 2';
} else if (slideIndex3.classList.contains('active')) {
  workoutDescription.innerHTML = 'This is Slide 3';
} else if (slideIndex4.classList.contains('active')) {
  workoutDescription.innerHTML = 'This is Slide 4';
};

HTML:

<div id="carouselExampleIndicators" class="carousel slide" data-ride="carousel">
      <ol class="carousel-indicators">
        <li data-target="#carouselExampleIndicators" data-slide-to="0" id="firstSlide" class="active"></li>
        <li data-target="#carouselExampleIndicators" data-slide-to="1" id="secondSlide"></li>
        <li data-target="#carouselExampleIndicators" data-slide-to="2" id="thirdSlide"></li>
        <li data-target="#carouselExampleIndicators" data-slide-to="3" id="fourthSlide"></li>
      </ol>
      <div class="carousel-inner">
        <div class="carousel-item active">
          <img class="d-block w-100" src="../Images/IW_1.jpg" alt="First slide">
        </div>
        <div class="carousel-item">
          <img class="d-block w-100" src="../Images/IW_2.jpg" alt="Second slide">
        </div>
        <div class="carousel-item">
          <img class="d-block w-100" src="../Images/IW_3.jpg" alt="Third slide">
        </div>
        <div class="carousel-item">
          <img class="d-block w-100" src="../Images/IW_4.jpg" alt="Fourth slide">
        </div>
      </div>
      <a class="carousel-control-prev" href="#carouselExampleIndicators" role="button" data-slide="prev">
        <span class="carousel-control-prev-icon" aria-hidden="true"></span>
        <span class="sr-only">Previous</span>
      </a>
      <a class="carousel-control-next" href="#carouselExampleIndicators" role="button" data-slide="next">
        <span class="carousel-control-next-icon" aria-hidden="true"></span>
        <span class="sr-only">Next</span>
      </a>
    </div>

Это код для слайд-шоу. Он работает полностью, поэтому здесь нет проблем.

Я не совсем уверен, почему текст, который я пытаюсь отобразить, не отображается - элемент абзаца остается пустым и ничего не меняется.

1 Ответ

0 голосов
/ 07 марта 2019

Если вы используете карусель Bootstrap, можно с уверенностью предположить, что вы используете JQUERY. Если это так, вы можете найти индекс элемента с активным классом и использовать переключатель.

$(document).ready(function(){
var msg = "";

switch($(".carousel-item.active").index()){
    case 1: msg = "test1";break;
    case 2: msg = "test2";break;
    case 3: msg = "test3";break;
}
$("#individualDescription").html(msg);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="carousel-item active"></div>
<div class="carousel-item"></div>
<div class="carousel-item"></div>

<p id="individualDescription"></p>
...