Andreas De Rudder Posted April 2, 2016 Share Posted April 2, 2016 Hi, I try to make a slide show with information that I found on the W3school site (http://www.w3schools.com/w3css/w3css_slideshow.asp). But it doesn't function. Could anyone tell me why? I have this in the head between the style tags: var slideIndex = 0;carousel();function carousel() { var i; var x = document.getElementsByClassName("mySlides"); for (i = 0; i < x.length; i++) { x.style.display = "none"; } slideIndex++; if (slideIndex > x.length) {slideIndex = 1} x[slideIndex-1].style.display = "block"; setTimeout(carousel, 2000);} And then I have this in the body: <img class="mySlides" src="images/index.jpg"><img class="mySlides" src="images/indexfoto.jpg"><a class="w3-btn-floating" onclick="plusDivs(-1)">❮</a><a class="w3-btn-floating" onclick="plusDivs(+1)">❯</a> Thank you for trying to help me! Andreas Link to comment Share on other sites More sharing options...
dsonesuk Posted April 2, 2016 Share Posted April 2, 2016 styles tags is for css? should be script tags. Link to comment Share on other sites More sharing options...
Andreas De Rudder Posted April 2, 2016 Author Share Posted April 2, 2016 Thank you. I've tried it with script tags in the head or in the body, but it doesn't work either. It changes nothing.... Link to comment Share on other sites More sharing options...
dsonesuk Posted April 2, 2016 Share Posted April 2, 2016 Show the complete code, it could be a number of things. Link to comment Share on other sites More sharing options...
Andreas De Rudder Posted April 2, 2016 Author Share Posted April 2, 2016 I've put it online: http://msngent.be/information.html The two pictures are temporary, just for the test. Link to comment Share on other sites More sharing options...
dsonesuk Posted April 2, 2016 Share Posted April 2, 2016 This is the problem carousel(); This calls the function to start the carousel slideshow, but because Its placed above the elements, it references the elements BEFORE they have been even rendered or exist as it is read from top to bottom. Fix: Option 1 Place below images, usually at very bottom of page before </body> as <script> carousel(); </script> Option2 call the function AFTER page fully rendered At its current position, change to window.onload = carousel; Link to comment Share on other sites More sharing options...
Andreas De Rudder Posted April 2, 2016 Author Share Posted April 2, 2016 Thank you very much! It works now. But I wonder one thing, I have now 7 temporary pictures that are all quite small. Later I will probably also use larger pictures. Could it be possible to progam a max size, or the same size for all pictures? thank you Link to comment Share on other sites More sharing options...
dsonesuk Posted April 2, 2016 Share Posted April 2, 2016 If they are proportionately the same, using width: 100%; height:auto; will make them fill the container width available to them with height adjusting proportionally. To allow for landscape or landscape images it becomes a little bit more complicated. Link to comment Share on other sites More sharing options...
Andreas De Rudder Posted April 3, 2016 Author Share Posted April 3, 2016 I have given two pictures in the slideshow a class and then I have given them a height or width with css, but that doesn't work. Look at http://msngent.be/information.html Do I have to do that in an other way? The pictures are now temporary, but the pictures that will come eventually in the slideshow will probably have different sizes. Link to comment Share on other sites More sharing options...
dsonesuk Posted April 3, 2016 Share Posted April 3, 2016 They already had a class? and i don't see any css styling related to these images classes? just apply my suggestion to current class of images. Link to comment Share on other sites More sharing options...
Andreas De Rudder Posted April 3, 2016 Author Share Posted April 3, 2016 I'm sorry, I forgot to put the new page online. It's on the web now. http://msngent.be/information.html I don't know how I have to work with classes in JavaScript. Link to comment Share on other sites More sharing options...
dsonesuk Posted April 3, 2016 Share Posted April 3, 2016 STILL can't see ANY styling to do with the images, you don't have to know ANYTHING about classes for JavaScript in this situation, my suggestion is ALL css related, I would never unnecessary add styling through JavaScript, when it can just be added using css using classes already there to do that very job. Link to comment Share on other sites More sharing options...
Andreas De Rudder Posted April 3, 2016 Author Share Posted April 3, 2016 Maybe you have to push the refresh button to see the new page, I had to do that too. Link to comment Share on other sites More sharing options...
dsonesuk Posted April 3, 2016 Share Posted April 3, 2016 YOU CAN'T HAVE two separate class attributes, all class name values are placed in a single class attribute. Link to comment Share on other sites More sharing options...
Andreas De Rudder Posted April 3, 2016 Author Share Posted April 3, 2016 Thank you. I have added a height in css code to the already existing class, and it works now. All the pictures, small and large, have now the same height, which is ok for me. But I have another question: Is it possible to have on one page two slide shows running at the same time? I have tried it with a div tag around each list of pictures, and do have two slide shows then, but the second starts running after the first has stopped. Link to comment Share on other sites More sharing options...
dsonesuk Posted April 3, 2016 Share Posted April 3, 2016 Unfortunately that slideshow is not set up to do that, it loops through each image with class 'mySlides' where ever it maybe, and therefore placing in different div elements won't make a difference. IT will require rewrite of code to achieve that. Link to comment Share on other sites More sharing options...
rootKID Posted April 7, 2016 Share Posted April 7, 2016 Hmm... i will take a look at this when i get home, but like dsonesuk says... you only define 1 class to all of them, that is how i understand this anyhow ... i will take a look at the code when i get home. Possible for you to share the code? The whole website code from the "information.html" file? Just hit "ctrl + c" and "ctrl + v" on a Windows machine to copy and paste the whole code into code-tags so we actually can see what is going on ^^Seeing the code on website and on here is 2 different things, depending on how you have coded the website Will take a look if you share the code LaTeRz Link to comment Share on other sites More sharing options...
dsonesuk Posted April 7, 2016 Share Posted April 7, 2016 Bulk of code is from w3.css slideshow (automatic) from link in post#1 Link to comment Share on other sites More sharing options...
ladytf Posted May 10, 2016 Share Posted May 10, 2016 Hi, i'm having some troubles make a slide show and i need a little help. i want use the "images as indicators" slideshow but, in first place when i open the page the imagens appears all in line only when i click in one picture he change for the format slideshow. Why that happen? My seconf question is a change i want to do but i don't know if it possible and how to do. i want instead the pictures apears bottom the slide show they apears in col at right and left of the slideshow. This is possible? how can i do that happen? I'm sory if i write something wrong but my english isn't so good. TY Link to comment Share on other sites More sharing options...
justsomeguy Posted May 10, 2016 Share Posted May 10, 2016 Are you checking for error messages in your browser? They will be in the browser's developer console. Link to comment Share on other sites More sharing options...
dsonesuk Posted May 10, 2016 Share Posted May 10, 2016 I imagine you are using the styling to hide slideshow images, without this all image will appear at once, until clicking of thumbnail causes code to hide all but selected. 1 Link to comment Share on other sites More sharing options...
ladytf Posted May 10, 2016 Share Posted May 10, 2016 I imagine you are using the styling to hide slideshow images, without this all image will appear at once, until clicking of thumbnail causes code to hide all but selected. how i do that? i just copy & past the code from w3schools and change the images Link to comment Share on other sites More sharing options...
dsonesuk Posted May 10, 2016 Share Posted May 10, 2016 IF you just copied and pasted the code, then changes images maybe its taken time to load w3.css styling from w3schools website completely, before taken effect. It would help if you supplied code, or link, it would save time in this boring game of guessing all the time. Link to comment Share on other sites More sharing options...
ladytf Posted May 10, 2016 Share Posted May 10, 2016 <div class="w3-content" style="max-width:500px"> <img class="mySlides" src="images/assets/bussoloceano (5).jpg" style="width:100%"> <img class="mySlides" src="images/assets/bussoloceano (6).jpg" style="width:100%"> <img class="mySlides" src="images/assets/bussoloceano (7).jpg" style="width:100%"> <div class="w3-row-padding w3-section"> <div class="w3-col s4"> <img class="demo w3-border w3-hover-shadow" src="images/assets/bussoloceano (5).jpg" style="width:30%" onclick="currentDiv(1)"> <img class="demo w3-border w3-hover-shadow" src="images/assets/bussoloceano (6).jpg" style="width:30%" onclick="currentDiv(2)"> <img class="demo w3-border w3-hover-shadow" src="images/assets/bussoloceano (7).jpg" style="width:30%" onclick="currentDiv(3)"> </div> </div> </div> var slideIndex = 1; showDivs(slideIndex); function plusDivs(n) { showDivs(slideIndex += n); } function currentDiv(n) { showDivs(slideIndex = n); } function showDivs(n) { var i; var x = document.getElementsByClassName("mySlides"); var dots = document.getElementsByClassName("demo"); if (n > x.length) {slideIndex = 1} if (n < 1) {slideIndex = x.length} ; for (i = 0; i < x.length; i++) { x[i].style.display = "none"; } for (i = 0; i < dots.length; i++) { dots[i].className = dots[i].className.replace(" w3-border-red", ""); } x[slideIndex-1].style.display = "block"; dots[slideIndex-1].className += " w3-border-red"; } this was what i copy Link to comment Share on other sites More sharing options...
dsonesuk Posted May 10, 2016 Share Posted May 10, 2016 (edited) And with this which I was referring to in post #21, you thought Ill just ignore that bit, because that can't be alll that important, well it IS! <style> .mySlides {display:none} </style> Edited May 10, 2016 by dsonesuk Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now