Im trying to get a working onepage site with multiple sliders. But after more than 2 slider its not working anymore. How to fix it?
I've got the code from w3schools for multiple sliders (trying to build up a website with w3.css framework). .asp
I tried to copy from 2 to 6 sliders and changed the "var slideId = ["mySlides1", "mySlides2"] " to my 6 defined. But its not working.
<!DOCTYPE html>
<html lang="de">
<head>
<title>Multiple Slider</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="css/w3.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<script src=".1.1/jquery.min.js"></script>
<script src="js/side-menu.js"></script>
</head>
<body>
<div class="w3-content w3-display-container">
<img class="mySlides1" src="img_snowtops.jpg" style="width:100%">
<img class="mySlides1" src="img_lights.jpg" style="width:100%">
<img class="mySlides1" src="img_mountains.jpg" style="width:100%">
<img class="mySlides1" src="img_forest.jpg" style="width:100%">
<button class="w3-button w3-black w3-display-left" onclick="plusDivs(-1, 0)">❮</button>
<button class="w3-button w3-black w3-display-right" onclick="plusDivs(1, 0)">❯</button>
</div>
<div class="w3-content w3-display-container">
<img class="mySlides2" src="img_snowtops.jpg" style="width:100%">
<img class="mySlides2" src="img_lights.jpg" style="width:100%">
<img class="mySlides2" src="img_mountains.jpg" style="width:100%">
<img class="mySlides2" src="img_forest.jpg" style="width:100%">
<button class="w3-button w3-black w3-display-left" onclick="plusDivs(-1, 0)">❮</button>
<button class="w3-button w3-black w3-display-right" onclick="plusDivs(1, 0)">❯</button>
</div>
<div class="w3-content w3-display-container">
<img class="mySlides3" src="img_snowtops.jpg" style="width:100%">
<img class="mySlides3" src="img_lights.jpg" style="width:100%">
<img class="mySlides3" src="img_mountains.jpg" style="width:100%">
<img class="mySlides3" src="img_forest.jpg" style="width:100%">
<button class="w3-button w3-black w3-display-left" onclick="plusDivs(-1, 0)">❮</button>
<button class="w3-button w3-black w3-display-right" onclick="plusDivs(1, 0)">❯</button>
</div>
<div class="w3-content w3-display-container">
<img class="mySlides4" src="img_snowtops.jpg" style="width:100%">
<img class="mySlides4" src="img_lights.jpg" style="width:100%">
<img class="mySlides4" src="img_mountains.jpg" style="width:100%">
<img class="mySlides4" src="img_forest.jpg" style="width:100%">
<button class="w3-button w3-black w3-display-left" onclick="plusDivs(-1, 0)">❮</button>
<button class="w3-button w3-black w3-display-right" onclick="plusDivs(1, 0)">❯</button>
</div>
<div class="w3-content w3-display-container">
<img class="mySlides5" src="img_snowtops.jpg" style="width:100%">
<img class="mySlides5" src="img_lights.jpg" style="width:100%">
<img class="mySlides5" src="img_mountains.jpg" style="width:100%">
<img class="mySlides5" src="img_forest.jpg" style="width:100%">
<button class="w3-button w3-black w3-display-left" onclick="plusDivs(-1, 0)">❮</button>
<button class="w3-button w3-black w3-display-right" onclick="plusDivs(1, 0)">❯</button>
</div>
<div class="w3-content w3-display-container">
<img class="mySlides6" src="img_snowtops.jpg" style="width:100%">
<img class="mySlides6" src="img_lights.jpg" style="width:100%">
<img class="mySlides6" src="img_mountains.jpg" style="width:100%">
<img class="mySlides6" src="img_forest.jpg" style="width:100%">
<button class="w3-button w3-black w3-display-left" onclick="plusDivs(-1, 0)">❮</button>
<button class="w3-button w3-black w3-display-right" onclick="plusDivs(1, 0)">❯</button>
</div>
<script>
var slideIndex = [1,1];
var slideId = ["mySlides1","mySlides2","mySlides3","mySlides4","mySlides5","mySlides6"]
showDivs(1, 0);
showDivs(1, 1);
function plusDivs(n, no) {
showDivs(slideIndex[no] += n, no);
}
function showDivs(n, no) {
var i;
var x = document.getElementsByClassName(slideId[no]);
if (n > x.length) {slideIndex[no] = 1}
if (n < 1) {slideIndex[no] = x.length}
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
x[slideIndex[no]-1].style.display = "block";
}
</script>
</body>
</html>
I expect a working output and be confused why its not working.
Im trying to get a working onepage site with multiple sliders. But after more than 2 slider its not working anymore. How to fix it?
I've got the code from w3schools for multiple sliders (trying to build up a website with w3.css framework). https://www.w3schools./howto/howto_js_slideshow.asp
I tried to copy from 2 to 6 sliders and changed the "var slideId = ["mySlides1", "mySlides2"] " to my 6 defined. But its not working.
<!DOCTYPE html>
<html lang="de">
<head>
<title>Multiple Slider</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="css/w3.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<script src="https://ajax.googleapis./ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="js/side-menu.js"></script>
</head>
<body>
<div class="w3-content w3-display-container">
<img class="mySlides1" src="img_snowtops.jpg" style="width:100%">
<img class="mySlides1" src="img_lights.jpg" style="width:100%">
<img class="mySlides1" src="img_mountains.jpg" style="width:100%">
<img class="mySlides1" src="img_forest.jpg" style="width:100%">
<button class="w3-button w3-black w3-display-left" onclick="plusDivs(-1, 0)">❮</button>
<button class="w3-button w3-black w3-display-right" onclick="plusDivs(1, 0)">❯</button>
</div>
<div class="w3-content w3-display-container">
<img class="mySlides2" src="img_snowtops.jpg" style="width:100%">
<img class="mySlides2" src="img_lights.jpg" style="width:100%">
<img class="mySlides2" src="img_mountains.jpg" style="width:100%">
<img class="mySlides2" src="img_forest.jpg" style="width:100%">
<button class="w3-button w3-black w3-display-left" onclick="plusDivs(-1, 0)">❮</button>
<button class="w3-button w3-black w3-display-right" onclick="plusDivs(1, 0)">❯</button>
</div>
<div class="w3-content w3-display-container">
<img class="mySlides3" src="img_snowtops.jpg" style="width:100%">
<img class="mySlides3" src="img_lights.jpg" style="width:100%">
<img class="mySlides3" src="img_mountains.jpg" style="width:100%">
<img class="mySlides3" src="img_forest.jpg" style="width:100%">
<button class="w3-button w3-black w3-display-left" onclick="plusDivs(-1, 0)">❮</button>
<button class="w3-button w3-black w3-display-right" onclick="plusDivs(1, 0)">❯</button>
</div>
<div class="w3-content w3-display-container">
<img class="mySlides4" src="img_snowtops.jpg" style="width:100%">
<img class="mySlides4" src="img_lights.jpg" style="width:100%">
<img class="mySlides4" src="img_mountains.jpg" style="width:100%">
<img class="mySlides4" src="img_forest.jpg" style="width:100%">
<button class="w3-button w3-black w3-display-left" onclick="plusDivs(-1, 0)">❮</button>
<button class="w3-button w3-black w3-display-right" onclick="plusDivs(1, 0)">❯</button>
</div>
<div class="w3-content w3-display-container">
<img class="mySlides5" src="img_snowtops.jpg" style="width:100%">
<img class="mySlides5" src="img_lights.jpg" style="width:100%">
<img class="mySlides5" src="img_mountains.jpg" style="width:100%">
<img class="mySlides5" src="img_forest.jpg" style="width:100%">
<button class="w3-button w3-black w3-display-left" onclick="plusDivs(-1, 0)">❮</button>
<button class="w3-button w3-black w3-display-right" onclick="plusDivs(1, 0)">❯</button>
</div>
<div class="w3-content w3-display-container">
<img class="mySlides6" src="img_snowtops.jpg" style="width:100%">
<img class="mySlides6" src="img_lights.jpg" style="width:100%">
<img class="mySlides6" src="img_mountains.jpg" style="width:100%">
<img class="mySlides6" src="img_forest.jpg" style="width:100%">
<button class="w3-button w3-black w3-display-left" onclick="plusDivs(-1, 0)">❮</button>
<button class="w3-button w3-black w3-display-right" onclick="plusDivs(1, 0)">❯</button>
</div>
<script>
var slideIndex = [1,1];
var slideId = ["mySlides1","mySlides2","mySlides3","mySlides4","mySlides5","mySlides6"]
showDivs(1, 0);
showDivs(1, 1);
function plusDivs(n, no) {
showDivs(slideIndex[no] += n, no);
}
function showDivs(n, no) {
var i;
var x = document.getElementsByClassName(slideId[no]);
if (n > x.length) {slideIndex[no] = 1}
if (n < 1) {slideIndex[no] = x.length}
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
x[slideIndex[no]-1].style.display = "block";
}
</script>
</body>
</html>
I expect a working output and be confused why its not working.
Share Improve this question asked Jan 8, 2019 at 5:38 FyndorFyndor 491 gold badge1 silver badge8 bronze badges 3- 1 maybe your ask is duplicate. Check here - stackoverflow./questions/9658840/… – Ahil Rahesh Commented Jan 8, 2019 at 5:42
- Try to use different class for each slider for example: w3-display-container-1 w3-display-container-2 w3-display-containe-3 – Cuong Hoang Commented Jan 8, 2019 at 6:20
- @CuongHoang but what of extra declaration i need then for css? – Fyndor Commented Jan 8, 2019 at 13:34
2 Answers
Reset to default 3Your are passing wrong index in every slider,
plusDivs(-1, 0) //this is for first
you are doing same for all other sliders, instead you should do this.
plusDivs(-1, 0) //first
plusDivs(-1, 1) //second
plusDivs(-1, 2) //third
This way you will have your slider working.
var slideIndex = [1, 1];
var slideId = ["mySlides1", "mySlides2"]
showDivs(1, 0);
showDivs(1, 1);
function plusDivs(n, no) {
showDivs(slideIndex[no] += n, no);
}
function showDivs(n, no) {
var i;
var x = document.getElementsByClassName(slideId[no]);
if (n > x.length) {
slideIndex[no] = 1
}
if (n < 1) {
slideIndex[no] = x.length
}
for (i = 0; i < x.length; i++) {
x[i].style.display = "none";
}
x[slideIndex[no] - 1].style.display = "block";
}
<!DOCTYPE html>
<html lang="de">
<head>
<title>Multiple Slider</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="css/w3.css" rel="stylesheet">
<link href="css/style.css" rel="stylesheet">
<script src="https://ajax.googleapis./ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="js/side-menu.js"></script>
</head>
<body>
<div class="w3-content w3-display-container">
<img class="mySlides1" src="https://assets.pernod-ricard./nz/media_images/test.jpg?hUV74FvXQrWUBk1P2.fBvzoBUmjZ1wct" style="width:100%">
<img class="mySlides1" src="https://images.sftcdn/images/t_app-logo-l,f_auto,dpr_auto/p/ce2ece60-9b32-11e6-95ab-00163ed833e7/2183169552/the-test-fun-for-friends-logo.png" style="width:100%">
<button class="w3-button w3-black w3-display-left" onclick="plusDivs(-1, 0)">❮</button>
<button class="w3-button w3-black w3-display-right" onclick="plusDivs(1, 0)">❯</button>
</div>
<div class="w3-content w3-display-container">
<img class="mySlides2" src="https://assets.pernod-ricard./nz/media_images/test.jpg?hUV74FvXQrWUBk1P2.fBvzoBUmjZ1wct" style="width:100%">
<img class="mySlides2" src="https://images.sftcdn/images/t_app-logo-l,f_auto,dpr_auto/p/ce2ece60-9b32-11e6-95ab-00163ed833e7/2183169552/the-test-fun-for-friends-logo.png" style="width:100%">
<button class="w3-button w3-black w3-display-left" onclick="plusDivs(-1, 1)">❮</button>
<button class="w3-button w3-black w3-display-right" onclick="plusDivs(1, 1)">❯</button>
</div>
</body>
</html>
Multi slide html content
<h2 style="text-align:center">Multiple Slideshows</h2>
<p>Slideshow 1:</p>
<div class="slideshow-container">
<div class="mySlides1">
<img src="q1.jpeg" style="width:100%">
</div>
<div class="mySlides1">
<img src="q2.jpeg" style="width:100%">
</div>
<div class="mySlides1">
<img src="q3.jpeg" style="width:100%">
</div>
<a class="prev" onclick="plusSlides(-1, 0)">❮</a>
<a class="next" onclick="plusSlides(1, 0)">❯</a>
</div>
<p>Slideshow 2:</p>
<div class="slideshow-container">
<div class="mySlides2">
<img src="q3.jpeg" style="width:100%">
</div>
<div class="mySlides2">
<img src="q2.jpeg" style="width:100%">
</div>
<div class="mySlides2">
<img src="q1.jpeg" style="width:100%">
</div>
<a class="prev" onclick="plusSlides(-1, 1)">❮</a>
<a class="next" onclick="plusSlides(1, 1)">❯</a>
</div>
<p>Slideshow 3:</p>
<div class="slideshow-container">
<div class="mySlides3">
<img src="q2.jpeg" style="width:100%">
</div>
<div class="mySlides3">
<img src="q1.jpeg" style="width:100%">
</div>
<div class="mySlides3">
<img src="q3.jpeg" style="width:100%">
</div>
<a class="prev" onclick="plusSlides(-1, 2)">❮</a>
<a class="next" onclick="plusSlides(1, 2)">❯</a>
</div>
<p>Slideshow 4:</p>
<div class="slideshow-container">
<div class="mySlides4">
<img src="q1.jpeg" style="width:100%">
</div>
<div class="mySlides4">
<img src="q2.jpeg" style="width:100%">
</div>
<a class="prev" onclick="plusSlides(-1, 3)">❮</a>
<a class="next" onclick="plusSlides(1, 3)">❯</a>
</div>
Script changes respect to multi slide index
<script>
var slideIndex = [1,1,1,1,1]; //.. multi slide index count
var slideId = ["mySlides1", "mySlides2","mySlides3","mySlides4","mySlides5"] // .. multi slide class name in array
//initalization
showSlides(1, 0); // zero index
showSlides(1, 1); // first
showSlides(1, 2); // second
showSlides(1, 3); // third
showSlides(1, 4); //four
//....
//handling previous slide
function plusSlides(n, no) {
showSlides(slideIndex[no] += n, no);
}
</script>
Try this code.