[JavaScript] Czas wyświetlany co 9 sekund


(Byadii22) #1

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:


([alex]) #2

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);


(errata72) #3

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


(Kubarek) #4

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.


(Marcin 110) #5

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.


(Byadii22) #6

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:


(Marcin 110) #7

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

var int = setNowInterval(clock, 9000);

powinno istnieć w htmlu coś takiego:


  • [/code]