Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [js] Problem z moim skryptem..., ...
ApC
post
Post #1





Grupa: Zarejestrowani
Postów: 121
Pomógł: 0
Dołączył: 22.09.2007

Ostrzeżenie: (20%)
X----


Witam:

Kod
<div id="abc"></div>


<script type="text/javascript">
function procent() {
var czas = <? print time(); ?>;
document.getElementById("abc").innerHTML= czas;
setTimeout("procent();", 1000);
}
procent();
</script>


I wszystko działa, ale jest problem, nie wiem czemu ale za każdym odświeżeniem time(); się nie zmienia, po mimo tego, że skrypt całkowicie się odświeża (funkcja procent() ). Ktoś wie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
nexis
post
Post #2





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Cytat(ApC @ 13.10.2007, 10:15:34 ) *
  1. var czas = <? print time(); ?>;


PHP jest językiem wykonującym się po stronie serwera, a nie przeglądarki. Skoro chcesz użyć JavaScript to użyj też jego funkcji do wyświetlania czasu!

Ten post edytował nexis 13.10.2007, 10:00:50


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
pjozwiak1
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 7.01.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Nie rozumiem co chcesz uzyskać?
Wykonując funkcję [js] procent() przeładowujesz zawartość <div id="abc">
W funkcji procent() zmienna czas jest raz zainicjowana wartością wygenerowaną na stałe przez php.
funkcją setTimeout() co 1 sekundę wywołujesz znowu funkcję procent, która w diva wstawia tą samą wartość.

Spróbuj może takiego rozwiązania, ono pokaże Ci zasadę działania:
  1. <div id="abc" onmouseover="procent();"> </div>
  2.  
  3.  
  4. <script type="text/javascript">
  5. var czas = <? print time(); ?>;
  6.  
  7. function procent() {
  8. czas++;
  9. document.getElementById("abc").innerHTML= czas;
  10. setTimeout("procent();", 1000);
  11. }
Go to the top of the page
+Quote Post
ApC
post
Post #4





Grupa: Zarejestrowani
Postów: 121
Pomógł: 0
Dołączył: 22.09.2007

Ostrzeżenie: (20%)
X----


I tak nie działa, dlaczego - nie wiem. Problem polega na tym, że jeżeli mam var czas = <? print time(); ?>; pod tym function { } to powinno mi pobierać za każdym razem nowy time(); Jak mam teraz to i tak nie działa, odwołajmy się do mojego przykładu, pierwszego. Dlaczego nie działa, jeżeli mam w function albo przed? o co tutaj dokładnie chodzi smile.gif? Bo mam skrypt w php który oblicza z time(); i muszę koniecznie mieć 'phpowskie' time(); Nie wiem czy ktoś mnie zrozumiał, ale nie działa. Spójrzcie na to co napisałem i postarajcie się pomóc - dzięki. Chcę aby zwracało mi poprawny aktualny time();

---

Nexis - a mam pytanko, czy javascript ma coś o takiej samej wartości jak php ma time(); smile.gif? :/

Ten post edytował ApC 13.10.2007, 10:40:25
Go to the top of the page
+Quote Post
maziak
post
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


Nie nie, to nie tak działa.

Całe PHP wykonuje sie na serwerze, po czym zawartosc tej juz "obrobionej" przez PHP strony jest wysyłana do użytkownika. PHP juz wtedy "nie obchodzi" co sie dalej z tą stroną dzieje, i każde dalsze ingerowanie w strukture strony to już musi być technika działająca po stronie przeglądarki(do łączenia przeglądarkiz serwerem mozna zastosowac np. AJAX, ale to juz wyższa szkoła jazdy). Dla tego wlasnie mozna jednorazowo wrzucić zmienne PHP do kodu js, ktory zostanie wysłany do przeglądarki, a nie można np. co sekunde wykonywać jakiejś funkcji php.

przykładowo :
  1. <?php 
  2. $zmienna="kek";
  3. ?>
  4. <script type="text/javascript">';
  5. var czas = <? echo $zmienna ?>;
  6.  
  7. </script>

Przegladarka zobaczy jako :

  1. <script type="text/javascript">';
  2. var czas = kek;
  3.  


Ten post edytował maziak 13.10.2007, 10:42:44
Go to the top of the page
+Quote Post
ApC
post
Post #6





Grupa: Zarejestrowani
Postów: 121
Pomógł: 0
Dołączył: 22.09.2007

Ostrzeżenie: (20%)
X----


Cytat(maziak @ 13.10.2007, 11:40:59 ) *
Nie nie, to nie tak działa.

Całe PHP wykonuje sie na serwerze, po czym zawartosc tej juz "obrobionej" przez PHP strony jest wysyłana do użytkownika. PHP juz wtedy "nie obchodzi" co sie dalej z tą stroną dzieje, i każde dalsze ingerowanie w strukture strony to już musi być technika działająca po stronie przeglądarki(do łączenia przeglądarkiz serwerem mozna zastosowac np. AJAX, ale to juz wyższa szkoła jazdy). Dla tego wlasnie mozna jednorazowo wrzucić zmienne PHP do kodu js, ktory zostanie wysłany do przeglądarki, a nie można np. co sekunde wykonywać jakiejś funkcji php.

przykładowo :
  1. <?php
  2. $zmienna=&#092;"kek\";
  3. ?>
  4. <script type=\"text/javascript\">';
  5. var czas = ;

Przegladarka zobaczy jako :

  1. <script type="text/javascript">';
  2. var czas = kek;
  3.  

Całkowicie to rozumiem, ale co mi dały te twoje przykłady? Przecież w pierwszym poście napisałem:

Kod
var czas = <? print time(); ?>;

Dużo mi nie pomogłeś... Wie ktoś jak zrobić, aby mi pobierało aktualny time() co 1 s w skrypcie js?
Go to the top of the page
+Quote Post
nexis
post
Post #7





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


  1. <script type="text/javascript">
  2. /* Odpowiednik funkcji time() w PHP */
  3. var currentTime = new Date();
  4. var czas = Math.round(currentTime.getTime()/1000);
  5. document.write(czas);
  6. /* Pamiętajmy jednak, że JavaScript pobiera czas z komputera, na którym jest wywoływany - PHP zaś czas z serwera! */


Ten post edytował nexis 13.10.2007, 10:46:51


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post
maziak
post
Post #8





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


Nie przeczytales za bardzo tego co napisałem, wiedział byś gdzie leżał błąd.
Twój kod :
  1. <script type="text/javascript">
  2. function procent() {
  3. var czas = <? print time(); ?>;
  4. document.getElementById("abc").innerHTML= czas;
  5. setTimeout("procent();", 1000);
  6. }
  7. procent();


Czyli co sekunde powtarzałeś funkcje, przypisujac zawsze ta sama wartosc do zmiennej "czas"(jednorazowo wygenerowaną przez PHP). Najlepiej to skorzystaj z tego, co napisał nexis, a jezeli nie kończysz pisania stron na tym przykładzie to zdecydowanie polecam zrozumienie zasady działania php względem js, bez tego ani rusz.
Pozdrawiam.

PS. lekko zedytowane to co napisał pjozwiak
  1. <div id="abc"> </div>
  2.  
  3. <script type="text/javascript">
  4. var czas = <? print time(); ?>;
  5.  
  6. function procent() {
  7. czas++;
  8. document.getElementById("abc").innerHTML= czas;
  9. }
  10.  
  11. setInterval("procent();", 1000);

Powinno działać. smile.gif

Ten post edytował maziak 13.10.2007, 11:08:16
Go to the top of the page
+Quote Post
nexis
post
Post #9





Grupa: Zarejestrowani
Postów: 1 012
Pomógł: 109
Dołączył: 26.09.2003
Skąd: nexis.pl

Ostrzeżenie: (0%)
-----


Jeśli chcesz jednak pobierać czas z serwera użyj AJAX!

js/advajax.js

js/actions.js

  1. <?php
  2. function procent() {
  3. advAJAX.get({
  4. url : "time.php",
  5. onSuccess : function(obj) {
  6. document.getElementById("time").innerHTML = obj.responseText;
  7. }
  8. });
  9. setTimeout("procent()", 1000);
  10. }
  11. ?>


index.html

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <title>Funkcja time() w JavaScript</title>
  4. <script type="text/javascript" src="js/advajax.js"></script>
  5. <script type="text/javascript" src="js/action.js"></script>
  6. </head>
  7.  
  8. <div id="time" onmouseover="procent()">?</div>
  9.  
  10. </body>
  11. </html>


time.php

  1. <?php
  2. ?>


--------------------
Zend Certified Engineer

Kliknij POMÓGŁ jeśli moja odpowiedź okazała się użyteczna!
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 01:57