按照目前的状态,我有一个幻灯片显示,当自动执行时,它会在特定图像上淡入特定文本(这很好),但是当按下next / prev按钮时,它也会淡入淡出。我想要的是将特定的文本在单击“下一个” /“上一个”按钮时显示在特定的幻灯片上,而不会使其淡入。

这是代码,我已经尝试了一些方法,但是没有任何效果!如果可以提供一段代码,并解释该语法如何实现其目标,则将非常有帮助。

  var slideIndex = 1;

          var t;

          showSlides(slideIndex);

            function plusSlides(n) {

                  slideIndex = slideIndex + n;
                  clearTimeout(t);
                  showSlides(slideIndex);
                  console.log(slideIndex);

            }

            function currentSlide(n) {

                  showSlides(slideIndex = n);

            }

            function showSlides(n) {

                  var i;

                  var slides = document.getElementsByClassName("mySlides");

                        if (n==undefined){n = ++slideIndex}

                        if (n > slides.length) {slideIndex = 1}

                        if (n < 1) {slideIndex = slides.length}

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

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

                  }

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

                  $(slides[slideIndex-1]).find('#fadeTxt1S1').fadeIn(3000);

                  $(slides[slideIndex-1]).find('#fadeTxt2S1').fadeIn(3000);

                  $(slides[slideIndex-1]).find('#fadeTxt1S2').fadeIn(3000);

                  $(slides[slideIndex-1]).find('#fadeTxt2S2').fadeIn(3000);

                  $(slides[slideIndex-1]).find('#fadeTxt1S3').fadeIn(3000);

                  $(slides[slideIndex-1]).find('#fadeTxt2S3').fadeIn(3000);

                  t=setTimeout(showSlides, 7500)

            };


     #fadeTxt1S1 {

         display: none;
         color: white;
         position: absolute;
         top: 300px;
         left: 250px;
         font-size: 65px;
         font-family: serif;
         font-style: italic;
         opacity: 0.9;
         text-shadow:  2px 2px #9B51E0;

         }

         #fadeTxt2S1 {

         display: none;
         color: white;
         position: absolute;
         bottom: 470px;
         right: 340px;
         font-size: 65px;
         font-family: serif;
         font-style: italic;
         opacity: 0.9;
         text-shadow:  2px 2px #9B51E0;

         }

         #fadeTxt1S2 {

         display: none;
         color: white;
         position: absolute;
         top: 200px;
         left: 300px;
         font-size: 65px;
         font-family: serif;
         font-style: italic;
         opacity: 0.9;
         text-shadow:  2px 2px #9B51E0;

         }

         #fadeTxt2S2 {

         display: none;
         color: white;
         position: absolute;
         bottom: 610px;
         right: 170px;
         font-size: 65px;
         font-family: serif;
         font-style: italic;
         opacity: 0.9;
         text-shadow:  2px 2px #9B51E0;

         }

         #fadeTxt1S3 {

         display: none;
         color: white;
         position: absolute;
         top: 310px;
         right: 110px;
         font-size: 60px;
         font-family: serif;
         font-style: italic;
         opacity: 0.9;
         text-shadow:  2px 2px #9B51E0;

         }

         #fadeTxt2S3 {

         display: none;
         color: white;
         position: absolute;
         bottom: 510px;
         right: 70px;
         font-size: 60px;
         font-family: serif;
         font-style: italic;
         opacity: 0.9;
         text-shadow:  2px 2px #9B51E0;

         }


<html>


     <div id="slideShowContainer">

                 <div class="mySlides fade">

                           <img class="homePageSlides imageCover" src=HomePage/slide3b.jpg">

                           <p id="fadeTxt1S1">"text1 for slide1"</p>

                           <p id="fadeTxt2S1">"text2 for slide1"</p>

                 </div>


                <div class="mySlides fade">

                           <img class="homePageSlides imageCover" src=HomePage/test2.jpg">

                           <p id="fadeTxt1S2">"text1 for slide2"</p>

                           <p id="fadeTxt2S2">"text2 for slide2"</p>

                 </div>

                <div class="mySlides fade">

                           <img class="homePageSlides imageCover" src=HomePage/test3.jpg">

                           <p id="fadeTxt1S3">"text1 for slide3"</p>

                           <p id="fadeTxt2S3">"text2 for slide3"</p>

                 </div>

            <a class="prev" onclick="plusSlides(-1)">&lsaquo;</a>

            <a class="next" onclick="plusSlides(1)">&rsaquo;</a>


      </div>

</html>

最佳答案

如果我理解正确,您想按“上一页/下一页”直接显示当前幻灯片的文本,然后按默认顺序显示其他文本。

以下是代码(我在Javascript代码底部更新了一些代码):

我的意见是添加一个offset = [the index of current slide]以确保当前幻灯片的文本将首先被处理。

附言:请全页测试幻灯片。


      var slideIndex = 1;

      var t;

      showSlides(slideIndex);

        function plusSlides(n) {

              slideIndex = slideIndex + n;
              clearTimeout(t);
              showSlides(slideIndex);
              console.log(slideIndex);

        }

        function currentSlide(n) {

              showSlides(slideIndex = n);

        }

        function showSlides(n) {

              var i;

              var slides = document.getElementsByClassName("mySlides");

                    if (n==undefined){n = ++slideIndex}

                    if (n > slides.length) {slideIndex = 1}

                    if (n < 1) {slideIndex = slides.length}

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

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

              }

              slides[slideIndex-1].style.display = "block";
              // Fade In the texts of all slides in specific order.
              for (i = 0; i < slides.length; i++) {
                // calculate out current SlideIndex for text fade in
                var targetIndex = (n+i)%slides.length+1; //(n+i) to make sure current slide will be processed first
                $(slides[slideIndex-1]).find('#fadeTxt1S' + targetIndex).fadeIn(3000);
                $(slides[slideIndex-1]).find('#fadeTxt2S' + targetIndex).fadeIn(3000);

              }

              t=setTimeout(showSlides, 7500)

        };

     #fadeTxt1S1 {

     display: none;
     color: white;
     position: absolute;
     top: 300px;
     left: 250px;
     font-size: 65px;
     font-family: serif;
     font-style: italic;
     opacity: 0.9;
     text-shadow:  2px 2px #9B51E0;

     }

     #fadeTxt2S1 {

     display: none;
     color: white;
     position: absolute;
     bottom: 470px;
     right: 340px;
     font-size: 65px;
     font-family: serif;
     font-style: italic;
     opacity: 0.9;
     text-shadow:  2px 2px #9B51E0;

     }

     #fadeTxt1S2 {

     display: none;
     color: white;
     position: absolute;
     top: 200px;
     left: 300px;
     font-size: 65px;
     font-family: serif;
     font-style: italic;
     opacity: 0.9;
     text-shadow:  2px 2px #9B51E0;

     }

     #fadeTxt2S2 {

     display: none;
     color: white;
     position: absolute;
     bottom: 610px;
     right: 170px;
     font-size: 65px;
     font-family: serif;
     font-style: italic;
     opacity: 0.9;
     text-shadow:  2px 2px #9B51E0;

     }

     #fadeTxt1S3 {

     display: none;
     color: white;
     position: absolute;
     top: 310px;
     right: 110px;
     font-size: 60px;
     font-family: serif;
     font-style: italic;
     opacity: 0.9;
     text-shadow:  2px 2px #9B51E0;

     }

     #fadeTxt2S3 {

     display: none;
     color: white;
     position: absolute;
     bottom: 510px;
     right: 70px;
     font-size: 60px;
     font-family: serif;
     font-style: italic;
     opacity: 0.9;
     text-shadow:  2px 2px #9B51E0;

     }

     .prev {
      font-size:32px;
     }
     .prev:hover {
      font-size:40px;
      color:red;
     }

     .next {
      font-size:32px;
     }
     .next:hover {
      font-size:40px;
      color:blue;
     }

     

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="slideShowContainer">

             <div class="mySlides fade">

                       <img class="homePageSlides imageCover" src=HomePage/slide3b.jpg">

                       <p id="fadeTxt1S1">"text1 for slide1"</p>

                       <p id="fadeTxt2S1">"text2 for slide1"</p>

             </div>


            <div class="mySlides fade">

                       <img class="homePageSlides imageCover" src=HomePage/test2.jpg">

                       <p id="fadeTxt1S2">"text1 for slide2"</p>

                       <p id="fadeTxt2S2">"text2 for slide2"</p>

             </div>

            <div class="mySlides fade">

                       <img class="homePageSlides imageCover" src=HomePage/test3.jpg">

                       <p id="fadeTxt1S3">"text1 for slide3"</p>

                       <p id="fadeTxt2S3">"text2 for slide3"</p>

             </div>

        <a class="prev" onclick="plusSlides(-1)">&lsaquo;</a>

        <a class="next" onclick="plusSlides(1)">&rsaquo;</a>


  </div>

07-24 18:06
查看更多