亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript:如何使用相同的腳本在一個頁面上添加多個圖像滑塊?

JavaScript:如何使用相同的腳本在一個頁面上添加多個圖像滑塊?

慕雪6442864 2023-09-18 15:52:36
我正在努力解決一頁上有多個滑塊的問題。我已經修復了一些隨機問題,例如在 stackoverflow 上搜索時圖像未顯示或消失,但對于這個問題,我一直在尋找類似問題的答案,但我不太明白他們是如何修復它的,因為只發布了固定代碼。然而,據我了解,每個滑塊 div 應該有不同的 scripID,但我無法解決它。這是我的代碼:HTML:<div class="card" class="col-md-3"> <!-- Slideshow container -->    <div class="slideshow-container">     <!-- Full-width images with number and caption text -->         <div class="mySlides fade">             <img src="/images/1.jpg" style="width:100%">         </div>         <div class="mySlides fade">             <img src="/images/2.jpg" style="width:100%">         </div>         <div class="mySlides fade">            <img src="/images/3.jpg" style="width:100%">         </div>     <!-- Next and previous buttons -->     <a class="prev" onclick="plusSlides(-1)">&#10094;</a>      <a class="next" onclick="plusSlides(1)">&#10095;</a>    </div>    <br>    <!-- The dots/circles -->    <div style="text-align:center">      <span class="dot" onclick="currentSlide(1)"></span>      <span class="dot" onclick="currentSlide(2)"></span>      <span class="dot" onclick="currentSlide(3)"></span>    </div> <h2>Header </h2> <hr> <p class="hinfo">headerinfo</p> <p>Text info on the card</p> <p>Grey & Walnut colors<br>W:120 ? D:120 ? H:77</p></div>腳本:var slideIndex = 1;showSlides(slideIndex);// Next/previous controlsfunction plusSlides(n) {  showSlides(slideIndex += n);}// Thumbnail image controlsfunction currentSlide(n) {  showSlides(slideIndex = n);}function showSlides(n) {  var i;  var slides = document.getElementsByClassName("mySlides");  var dots = document.getElementsByClassName("dot");  if (n > slides.length) {slideIndex = 1}  if (n < 1) {slideIndex = slides.length}  for (i = 0; i < slides.length; i++) {      slides[i].style.display = "none";  }  for (i = 0; i < dots.length; i++) {      dots[i].className = dots[i].className.replace(" active", "");  }  slides[slideIndex-1].style.display = "block";  dots[slideIndex-1].className += " active";}</script>
查看完整描述

1 回答

?
四季花海

TA貢獻1811條經驗 獲得超5個贊

首先,您需要將 id 添加到您的容器中,并向您的函數添加其他參數,以便它們可以知道哪些滑塊需要更改:


<div class="slideshow-container" id="first">


 <!-- Full-width images with number and caption text -->

     <div class="mySlides fade">

         <img src="/images/1.jpg" style="width:100%">

     </div>


     <div class="mySlides fade">

         <img src="/images/2.jpg" style="width:100%">

     </div>


     <div class="mySlides fade">

        <img src="/images/3.jpg">

     </div>


 <!-- Next and previous buttons -->

 <a class="prev" onclick="plusSlides(-1, 'first', 'firstSliderIndex')">&#10094;</a>

  <a class="next" onclick="plusSlides(1, 'first', 'firstSliderIndex')">&#10095;</a>

  <br />

  <!-- The dots/circles -->

<div style="text-align:center">

  <span class="dot" onclick="currentSlide(1, 'first', 'firstSliderIndex')"></span>

  <span class="dot" onclick="currentSlide(2, 'first', 'firstSliderIndex')"></span>

  <span class="dot" onclick="currentSlide(3, 'first', 'firstSliderIndex')"></span>

</div>

</div>

你的腳本:


<script>

    var indexes = {

        firstSliderIndex: 1,

        secondSliderIndex: 2,

    };

    showSlides(indexes.firstSliderIndex, 'first', 'firstSliderIndex');

    // Next/previous controls

    function plusSlides(n, id, index) { // n - number of slide, id - container id, index - current slide number in slider

        showSlides(indexes[index] += n, id, index);

    }

    // Thumbnail image controls

    function currentSlide(n, id, index) {

        showSlides(indexes[index] = n, id, index);

    }


    function showSlides(n, id, index) {

        var i;

        var slides = document.querySelectorAll(`#${id} .mySlides`);

        var dots = document.querySelectorAll(`#${id} .dot`);

        if (n > slides.length) {

            indexes[index] = 1;

        }

        if (n < 1) {indexes[index] = slides.length}

        for (i = 0; i < slides.length; i++) {

            slides[i].style.display = "none";

        }

        for (i = 0; i < dots.length; i++) {

            dots[i].className = dots[i].className.replace(" active", "");

        }

        slides[indexes[index]-1].style.display = "block";

        dots[indexes[index]-1].className += " active";

    }

</script>

當然,這段代碼可以重構或修改,但這是最簡單的方法


查看完整回答
反對 回復 2023-09-18
  • 1 回答
  • 0 關注
  • 92 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號