【问题标题】:javascript innerHTML if classList contains thisjavascript innerHTML 如果 classList 包含这个
【发布时间】:2019-03-07 18:12:21
【问题描述】:

我想编辑一个段落元素 -

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

在我的 HTML 上取决于在我的 html 上哪个幻灯片处于活动状态。我正在使用引导轮播,它将活动类传递给当前显示的任何图片。

我目前正在使用 classList.contains 来检查元素是否有要在段落中写入的 class 和 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>

这是幻灯片的代码。它完全工作,所以这里没有问题。

我不确定为什么我尝试显示的文本没有显示 - 段落元素保持为空并且没有任何更改。

【问题讨论】:

  • 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及重现它所需的最短代码 在问题本身中。请参阅:如何创建minimal reproducible example
  • document.querySelector('active').id 是找到哪个幻灯片处于活动状态的更好方法,可以通过这种方式避免所有变量。您也可以将漂亮的名称(即 Slide 1 而不是 firstSlide)存储在数据属性中,以避免出现 if/else 或 case 语句链。
  • 什么不起作用?你能把你的html也包括进来吗?
  • @cb64 不显示 javascript 消息,而是段落元素保持为空。我刚刚编辑了我的帖子以包含 html
  • 我在您的 HTML 中找不到 ID 为 individualDiscription 的元素。

标签: javascript innerhtml


【解决方案1】:

如果您使用的是 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>

【讨论】:

    猜你喜欢
    • 2017-05-25
    • 1970-01-01
    • 2021-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-08
    • 2015-06-09
    • 2021-12-24
    相关资源
    最近更新 更多