Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Przedszkole _ [JavaScript]Nie działa skrypt JS

Napisany przez: michuwsh 21.06.2018, 22:35:27

Hej mam problem potrzebuje pobrać akapity o klasie "demo" do tablicy/obiektu policzyć ile występuje takich akapitów o klasie demo i wyświetlić każdy z osobna z 2 sekundowym timeoutem w pojemniku div o nazwie test. Ma to być coś na zasadzie slidera ale zamiast zdjęć ma zmieniać się tekst. Moj kod wygląda tak :

  1.  
  2. <!doctype html>
  3.  
  4. <http://december.com/html/4/element/html.html lang="pl">
  5. <http://december.com/html/4/element/head.html>
  6. <http://december.com/html/4/element/meta.html charset="utf-8">
  7.  
  8. <http://december.com/html/4/element/title.html>Pierwszy test</http://december.com/html/4/element/title.html>
  9. <http://december.com/html/4/element/meta.html name="description" content="The HTML5 Herald">
  10. <http://december.com/html/4/element/meta.html name="author" content="SitePoint">
  11.  
  12. <http://december.com/html/4/element/link.html rel="stylesheet" href="css/styles.css?v=1.0">
  13.  
  14.  
  15. </http://december.com/html/4/element/head.html>
  16.  
  17. <http://december.com/html/4/element/body.html>
  18. <http://december.com/html/4/element/p.html class="demo">To jest pierwszy przykładowy tekst do js</http://december.com/html/4/element/p.html>
  19. <http://december.com/html/4/element/p.html class="demo">To jest drugi przykładowy tekst do js</http://december.com/html/4/element/p.html>
  20. <http://december.com/html/4/element/p.html class="demo">To jest trzeci przykładowy tekst do js</http://december.com/html/4/element/p.html>
  21. <http://december.com/html/4/element/div.html id="test"></http://december.com/html/4/element/div.html>
  22. <http://december.com/html/4/element/script.html>
  23.  
  24. var x = document.getElementsByClassName("demo");
  25. var liczba = x.length;
  26. var i;
  27. change();
  28. function change() {
  29. for (i=0; i < liczba; i++) {
  30. var stan = x[i].innerHTML;
  31. document.getElementById('test').innerHTML = stan;
  32.  
  33. }
  34. setTimeout(change, 2000);
  35. }
  36.  
  37. </http://december.com/html/4/element/script.html>
  38. </http://december.com/html/4/element/body.html>
  39. </http://december.com/html/4/element/html.html>
  40.  

Napisany przez: markuz 22.06.2018, 12:09:34

Teraz co 2 sekundy podmieniasz treść diva o id test 3 razy - więc finalnie będziesz widział tylko treść ostatniego diva za każdym razem. Zmienną i musisz trzymać poza pętlą (tak jak jest obecnie) i zwiększać ją tylko raz (lub zmniejszać do 0) w funkcji change.

Napisany przez: olszam 25.06.2018, 12:56:35

  1. function change() {
  2. var i=0;
  3. setInterval(function(){
  4. if(i<liczba){
  5. var stan = x[i].innerHTML;
  6. document.getElementById('test').innerHTML = stan;
  7. i=i+1;
  8. }else{
  9. i = 0;
  10. var stan = x[i].innerHTML;
  11. document.getElementById('test').innerHTML = stan;
  12. i=i+1;
  13. }
  14. }, 2000);
  15.  
  16. }

tą funkcję mógłbyś tak zmienić jeśli ci zależy na ciągłym wracaniu do początku

Napisany przez: trueblue 25.06.2018, 13:13:17

To już prościej tak:

  1. function change() {
  2. var i=0;
  3. setInterval(function(){
  4. if(i<liczba){
  5. var stan = x[i].innerHTML;
  6. }else{
  7. var stan = x[0].innerHTML;
  8. i=1;
  9. }
  10. i++;
  11. document.getElementById('test').innerHTML = stan;
  12. }, 2000);
  13. }

albo wręcz tak:
  1. function change() {
  2. var i=0;
  3. setInterval(function(){
  4. i %= liczba;
  5. var stan = x[i++].innerHTML;
  6. document.getElementById('test').innerHTML = stan;
  7. }, 2000);
  8. }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)