[JavaScript] Czas wyświetlany co 9 sekund

Witam!

Ostatnio na informatyce dostałem zadanie zrobić skrypt, który będzie wyświetlał aktualny czas co 9 sekund., Męczę się z tym już całe popołudnie, a jak efektów nie widać, tak dalej nic. Proszę o nakierowanie mnie w odpowiednik kierunku, nie musi być to gotowe rozwiązanie, raczej wskazanie błędu :slight_smile:

A! Rodzaj wyświetlenia godziny dowolny w zasadzie, bo może co 9sekund dopisywać czas w nowej linijce, a może co 9 sekund wyrzycać alert :slight_smile: To już kwestia wyświetlania. Poniżej mój skrypt, który niestety nie działa ;/

var i=newDate();

var x=i.getSeconds();


do

  {

  document.write("The number is " + x);

  document.write("
");

  x++;

  }

while (x<=59)

Co w nim nie tak? :wink:

Od razu mówię, korzystam z tutoriala na w3schools.com :slight_smile:

Aby stwierdzić co jest nie tak wystarczy zastanowić się co robi przedstawiony scrypt.

Pobiera datę i czas, załóżmy że jest akurat 20:07:18

to twój program wstawi na stronie tekst:

The number is 18

The number is 19

The number is 20

i tak do 59

Właściwie “nie tak” jest to, że w przedstawionym kodzie brak czegokolwiek wspólnego z zadaniem.

użyj funkcji:

setTimeout(‘PokazCzas();’,9000);

Spróbuj w ostatniej linijce zmienić na { x<=54 }

To nic nie da :x

Do tego, żeby zrobić to co chcesz, służy właśnie funkcja setInterval, ew. setTimeout.

Ogólny kod wygląda tak:

function pokazCzas() {

  var d = new Date();

  ...

  alert('Aktualny czas to ... ');

}


setInterval(pokazCzas, 9000);

W kodzie wyżej funkcja pokazCzas będzie wywoływana cyklicznie co 9000 milisekund.

No… co? :wink:

function setNowInterval(fun, time) {

  fun();

  return setInterval(fun, time);

}


function clock() {

  var t = new Date();

  var ul = document.getElementById("lista");

  var li = document.createElement("li");

  var txt = document.createTextNode(t.toLocaleTimeString());

  li.appendChild(txt);

  ul.appendChild(li);

}


var int = setNowInterval(clock, 9000);

ten kod będzie dorzucał do listy aktualny czas co 9 sekund.

Kurcze, no nie myślałem, że tylu chętnych do pomocy się znajdzie :slight_smile: Dzięki :slight_smile:

Więc tak. To, co podał flash4gordon nie specjalnie ze mną współpracuje, bo nic się nie wyświetla, ale mimo to, wielkie dzięki :slight_smile:

Natomiast kubar3k dzięki :slight_smile: Twój skrypt nieco zmodyfikowałem, tak, że zamiast alertu jest dopisywany czas na końcu listy. Dzięki :slight_smile:

Bo kod dopisuje do listy (istniejącej). Przed wywołaniem

var int = setNowInterval(clock, 9000);

powinno istnieć w htmlu coś takiego:

[/code]