Pokaz slajdów w JS

0

Wgl nie wyświetla mi żadnego zdjęcia (pliki są w png)
czy w <body> mogą być 2 onload'y?

<!DOCTYPE>
<html lang="pl">

<head>
  <meta charset = "utf-8" />
  
  <script type="text/javascript" src="timer.js"></script>
  <script type="text/javascript" src="logowanie.js"></script>
  <script type="text/javascript">
  
  var numer = Math.floor(Math.random()*5)+1;
  
  function reklama()
  {
    numer++; if(numer>5) numer=1;
	
	var plik = "<img src=\"Reklamy/reklama" + numer + ".png\"/>";
	document.getElementById("slajdy").innerHTML = plik;
	
	setTimeout("reklama()",5000);
	
  }
  </script>
  
  
</head>
<body onload="odliczanie()" onload="reklama()">
  <div id="zegar"></div>

  <input type="text" id="plogin"/>
  <input type="text" id="phaslo"/>
  <input type="submit" value="zaloguj" onclick="logowanie()"/>
  <div id="wynlog"></div>
  <div id="slajdy"></div>

</body>
</html>
0

Dobra problem jest w onload, jak to zapisać aby ładowało non-stop 2 funkcje??

2

Napisz funkcję onload()
A w niej uruchom reklama() i odliczanie()

function onload()
{
  reklama();
  odliczanie();
}

...

</head>
<body onload="onload()">
2

Możesz też użyć addEventListener w JS. Wtedy możesz przypisać kilka handlerów.

Poza tym nie musisz w ogóle używać w tym przypadku onload, wystarczy, że umieścisz <script></script> na końcu, zamiast na początku.

<body>
  <div id="zegar"></div>

  <input type="text" id="plogin"/>
  <input type="text" id="phaslo"/>
  <input type="submit" value="zaloguj" onclick="logowanie()"/>
  <div id="wynlog"></div>
  <div id="slajdy"></div>
    <script>
         // to się odpali jak już będą elementy HTML utworzone
    </script>
</body>
setTimeout("reklama()",5000);

Po co tak? Możesz po prostu tak:

setTimeout(reklama, 5000);

W JS możesz podać samą nazwę funkcji bez jej wywołania. Wtedy zostanie przekazana referencja do funkcji.

ale wnioskuję, że korzystasz z jakichś dziwnych tutoriali/przestarzałych podręczników, że każą ci pisać tak, jak dzisiaj już nikt nie pisze, i nie tłumaczą nowoczesnego JavaScriptu. Serio, znajdź sobie jakieś nowsze źródła wiedzy niż te, z których korzystasz, bo ten kod to trochę jakby z poprzedniej epoki.

var plik = "<img src=\"Reklamy/reklama" + numer + ".png\"/>";

Bardziej elegancko jest operować na obiektach Image:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement/Image

2

@Mateusz Gmerek: na Twoje pytanie odpowiedział @LukeJL, ale dodam, że aby wywołać dwie funkcje w onload, należy oddzielić je średnikami.

<body onload="a(); b()">

Nie polecam jednak takiego zapisu, lepiej dodać eventListener w JS, ewentualnie skorzystać z rozwiązania @Robert Karpiński.

Doczepię się jeszcze do dwóch rzeczy.

  1. Dobrą praktyką jest nazywanie zmiennych, nazw funkcji itp. po angielsku. Sam zaczynając przygodę z programowaniem nazywałem je po polsku, ale anglojęzyczne nazewnictwo uczyni Twój kod czytelniejszym dla zagranicznych programistów, którzy w przyszłości mogą analizować Twój kod. Jeśli jednak stosujesz polskie nazewnictwo, rób to chociaż dokładnie. Mówię tu o
<div id="wynlog"></div>

Może to zwykła literówka, a może lenistwo.
2. Patrząc na ID Twoich inputów i braku formularza wnioskuję, że tworzysz formularz logowana w JS. Jest to niebezpieczne rozwiązanie, ponieważ cały kod wykonuje się po stronie klienta, czyli każdy może podejrzeć Twój kod i go edytować. Lepiej użyć do tego PHP i logować po stronie serwera.

1 użytkowników online, w tym zalogowanych: 0, gości: 1