2016-10-05 3 views
-1

Я не знаю, что мне нужно сделать, чтобы дедуплицировать первые кнопки контейнера слайд-шоу. Когда я нажимаю следующую и предыдущую кнопку на первом контейнере слайд-шоу, это не меняется, изменяется только контейнер слайд-шоу.
Вы можете запустить в своем браузере только изменение пути к изображениям.Duplicate Next & Previous button function

Index.html

<!DOCTYPE html> 
 
<html> 
 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
 

 
<style> 
 
* {box-sizing:border-box} 
 
body {font-family: Verdana,sans-serif;margin:0} 
 
.mySlides1 {display:none} 
 

 
body { 
 
    background: #2c3338; 
 
} 
 

 
/* Slideshow container */ 
 
.slideshow-container1 { 
 
    max-width: 350px; 
 
    position: relative; 
 
    top: 20px; 
 
    margin: auto; 
 
} 
 

 
/* Next & previous buttons */ 
 
.prev1, .next1 { 
 
    cursor: pointer; 
 
    position: absolute; 
 
    top: 50%; 
 
    width: auto; 
 
    padding: 16px; 
 
    margin-top: -22px; 
 
    color: green; 
 
    font-weight: bold; 
 
    font-size: 18px; 
 
    transition: 0.6s ease; 
 
    border-radius: 0 3px 3px 0; 
 
} 
 

 
/* Position the "next button" to the right */ 
 
.next1 { 
 
    right: 0; 
 
    border-radius: 3px 0 0 3px; 
 
} 
 

 
/* On hover, add a black background color with a little bit see-through */ 
 
.prev1:hover, .next1:hover { 
 
    background:#696969; 
 
} 
 

 
/* Fading animation */ 
 
.fade { 
 
    -webkit-animation-name: fade; 
 
    -webkit-animation-duration: 1.5s; 
 
    animation-name: fade; 
 
    animation-duration: 1.5s; 
 
} 
 

 
@-webkit-keyframes fade { 
 
    from {opacity: .4} 
 
    to {opacity: 1} 
 
} 
 

 
@keyframes fade { 
 
    from {opacity: .4} 
 
    to {opacity: 1} 
 
} 
 

 
/* On smaller screens, decrease text size */ 
 
@media only screen and (max-width: 300px) { 
 
    .prev1, .next1,.text {font-size: 11px} 
 
} 
 
</style> 
 

 
<style> 
 
* {box-sizing:border-box} 
 
body {font-family: Verdana,sans-serif;margin:0} 
 
.mySlides2 {display:none} 
 

 
/* Slideshow container */ 
 
.slideshow-container2 { 
 
    max-width: 350px; 
 
    position: relative; 
 
    top: 150px; 
 
    margin: auto; 
 
} 
 

 
/* Next & previous buttons */ 
 
.prev2, .next2 { 
 
    cursor: pointer; 
 
    position: absolute; 
 
    top: 50%; 
 
    width: auto; 
 
    padding: 16px; 
 
    margin-top: -22px; 
 
    color: red; 
 
    font-weight: bold; 
 
    font-size: 18px; 
 
    transition: 0.6s ease; 
 
    border-radius: 0 3px 3px 0; 
 
} 
 

 
/* Position the "next button" to the right */ 
 
.next2 { 
 
    right: 0; 
 
    border-radius: 3px 0 0 3px; 
 
} 
 

 
/* On hover, add a black background color with a little bit see-through */ 
 
.prev2:hover, .next2:hover { 
 
    background:#696969; 
 
} 
 

 
/* Fading animation */ 
 
.fade { 
 
    -webkit-animation-name: fade; 
 
    -webkit-animation-duration: 1.5s; 
 
    animation-name: fade; 
 
    animation-duration: 1.5s; 
 
} 
 

 
@-webkit-keyframes fade { 
 
    from {opacity: .4} 
 
    to {opacity: 1} 
 
} 
 

 
@keyframes fade { 
 
    from {opacity: .4} 
 
    to {opacity: 1} 
 
} 
 

 
/* On smaller screens, decrease text size */ 
 
@media only screen and (max-width: 300px) { 
 
    .prev2, .next2,.text {font-size: 11px} 
 
} 
 
</style> 
 
<body> 
 

 
<div class="slideshow-container1"> 
 

 
<div class="mySlides1 fade"> 
 
    <img src="img/thumb-1.jpg" style="width:100%"> 
 
</div> 
 

 
<div class="mySlides1 fade"> 
 
    <img src="img/thumb-2.jpg" style="width:100%"> 
 
</div> 
 

 
<div class="mySlides1 fade"> 
 
    <img src="img/thumb-3.jpg" style="width:100%"> 
 
</div> 
 

 
<a class="prev1" onclick="plusSlides(-1)">&#10094;</a> 
 
<a class="next1" onclick="plusSlides(1)">&#10095;</a> 
 

 
</div> 
 
<br> 
 

 
<div style="text-align:center"> 
 
    <span class="dot1" onclick="currentSlide(1)"></span> 
 
    <span class="dot1" onclick="currentSlide(2)"></span> 
 
    <span class="dot1" onclick="currentSlide(3)"></span> 
 
</div> 
 

 
<script> 
 
var slideIndex = 1; 
 
showSlides(slideIndex); 
 

 
function plusSlides(n) { 
 
    showSlides(slideIndex += n); 
 
} 
 

 
function currentSlide(n) { 
 
    showSlides(slideIndex = n); 
 
} 
 

 
function showSlides(n) { 
 
    var i; 
 
    var slides = document.getElementsByClassName("mySlides1"); 
 
    var dots = document.getElementsByClassName("dot1"); 
 
    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> 
 

 
</body> 
 

 
<body> 
 

 
<div class="slideshow-container2"> 
 

 
<div class="mySlides2 fade"> 
 
    <img src="img/thumb-1.jpg" style="width:100%"> 
 
</div> 
 

 
<div class="mySlides2 fade"> 
 
    <img src="img/thumb-2.jpg" style="width:100%"> 
 
</div> 
 

 
<div class="mySlides2 fade"> 
 
    <img src="img/thumb-3.jpg" style="width:100%"> 
 
</div> 
 

 
<a class="prev2" onclick="plusSlides(-1)">&#10094;</a> 
 
<a class="next2" onclick="plusSlides(1)">&#10095;</a> 
 

 
</div> 
 
<br> 
 

 
<div style="text-align:center"> 
 
    <span class="dot2" onclick="currentSlide(1)"></span> 
 
    <span class="dot2" onclick="currentSlide(2)"></span> 
 
    <span class="dot2" onclick="currentSlide(3)"></span> 
 
</div> 
 

 
<script> 
 
var slideIndex = 1; 
 
showSlides(slideIndex); 
 

 
function plusSlides(n) { 
 
    showSlides(slideIndex += n); 
 
} 
 

 
function currentSlide(n) { 
 
    showSlides(slideIndex = n); 
 
} 
 

 
function showSlides(n) { 
 
    var i; 
 
    var slides = document.getElementsByClassName("mySlides2"); 
 
    var dots = document.getElementsByClassName("dot2"); 
 
    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> 
 

 
</body> 
 
</html>

Заранее спасибо!

ответ

0

В вашем случае, вы можете изменить все функции и имя переменной второго сценария:

slideIndex->slideIndex2 
plusSlides -> plusSlides2 
currentSlide -> currentSlide2 
showSlides -> showSlides2 

Но вы можете попробовать, чтобы не дублировать ваш скрипт передать переменную в функцию:

plusSlides(1, 1) // mean next picture in slide 1 
plusSlides(1, 1) // mean next picture in slide 1 
plusSlides(2, -1) // mean previous picture in slide 2 
plusSlides(2, -1) // mean previous picture in slide 2 
0

Ваши JS-функции и переменные дублируются (они всегда будут реагировать странным образом). Вы должны изменить их имена или реорганизовать их для использования одних и тех же функций для обоих слайд-шоу.