Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> JavaScript z poziomu PHP
qbas-s
post 15.07.2009, 23:44:37
Post #1





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

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


Mam sobie w index.php taki blok
  1. <div id="error" class="off">
  2.  
  3. </div>


w css to wyżej jest zdefiniowane tak:

#error{
position: absolute;
width: 312px;
height: 240px;
left: 400px;
top: 200px;
}
.off{}
.error_window{
background-image: url(img/error_window.png);
}


Do index za pomocą AJAX wczytuję pewien skrypt php w którym są instrukcję warunkowe.
w jednej z tych instrukcji chciałbym aby nazwa klasy powyższego diva się zmieniła.
Do tego potrzebne jest mi wywołanie nast js w php:

function error_window(divID)
{
var el = document.getElementById(divID);
el.className='error_window';
}

to co aktualnie mam w interesującej mnie instrukcji warunkowej php to:
  1. <?php
  2. echo "<script type=\"text/javascript\"> error_window('error') </script>";
  3. echo $error;
  4. ?>

I tu pytanie dlaczego wywołanie js w echo mi nie działa? echo $error wyświetla się tam gdzie trzeba.
Wszystko ma działać asynchronicznie.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
wookieb
post 16.07.2009, 07:25:56
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Zapodaj to publicznie bo raczej wywołujesz skrypty w złej kolejności.


--------------------
Go to the top of the page
+Quote Post
qbas-s
post 16.07.2009, 23:30:29
Post #3





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

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


jak to publicznie? jak wywołam to w innej kolejności to nie będzie spełniać zadania. className ma się zmieniać zależnie od wartości przekazanej do instrukcji warunkowej php
Go to the top of the page
+Quote Post
Kildyt
post 16.07.2009, 23:36:02
Post #4





Grupa: Zarejestrowani
Postów: 869
Pomógł: 53
Dołączył: 20.10.2003
Skąd: Przeworsk

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


Ale jak to się nie wyświetla? Może po prostu nie widzisz efektu? Wydaje mi się, że w kodzie js zapomniałeś dodać średnika.

Ten post edytował Kildyt 16.07.2009, 23:36:13


--------------------
Go to the top of the page
+Quote Post
qbas-s
post 17.07.2009, 00:16:53
Post #5





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

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


efekt byłby widoczny. Zrobiłem test i odrazu przy ładowaniu index ładował się div tylko poprostu zmieniłem na <div id="error"> i w css to co w klasie przeniosłem do #error i efekt był. w skrypcie ze średnikiem też próbowałem - on nie jest konieczny
Go to the top of the page
+Quote Post
#luq
post 17.07.2009, 09:04:10
Post #6





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


Kod
el.className='error_window';

Jedynie IE posiada właściwość className. Reszta popularnych przeglądarek posiada właściwość class, aczkolwiek nie wiem czy className nie działa w nich także poprawnie.

Poza tym wydaje mi się, że masz to źle zaprojektowane. Czy nie można w Twoim wypadku zrobić tak:

Ajax wczytuje jakiś plik php, on się wykonuje i zwraca wyniki, zamiast
  1. <?php
  2. echo "<script type=\"text/javascript\"> error_window('error') </script>";
  3. echo $error;
  4. ?>

samo
  1. <?php
  2. echo $error;
  3. ?>

A wykonaniem funkcji error_window('error') zajmuje się JS w oparciu o readyState == 4


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
qbas-s
post 17.07.2009, 11:55:09
Post #7





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

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


dzięki #luq Twoje rozwiązanie działa- oczywiście sog dla Ciebie:)
Jednak co do nie działania className w innych przeglądarkach niż IE się nie zgodzę.
Mam np taki skrypt który sprawdza jaka jest rozdzielczość ekranu i w zależności od wyniku za pomocą className zmienia wartość class div'a i to działa.
Go to the top of the page
+Quote Post
#luq
post 17.07.2009, 14:15:25
Post #8





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


Być może. Tak jak napisałem:
Cytat
aczkolwiek nie wiem czy className nie działa w nich także poprawnie.

W specyfikacji jest chyba .class (nie chce mi się tego teraz sprawdzać).
Kiedyś pisałem coś i wykorzystałem właściwość .class wszędzie śmiłago dobrze tylko nie pod IE bo tam jest .className stąd moja uwaga.


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
erix
post 17.07.2009, 14:29:24
Post #9





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Cytat
W specyfikacji jest chyba .class (nie chce mi się tego teraz sprawdzać).

Wszędzie jest className. [;


--------------------

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
#luq
post 17.07.2009, 14:45:02
Post #10





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


Masz rację erix. Sprawdzałem winksmiley.jpg
class jest słowem zarezerwowanym na kolejne wersje ECMAScript.


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
qbas-s
post 17.07.2009, 20:38:28
Post #11





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

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


#luq to co doradziłeś mi działa ale nie osiągnąłem do końca zamierzonego efektu.
Funkcja error_window po naciśnięciu rejestruj wykonuje się w obrębie readyState == 4.
Czyli wykona się niezależnie od tego czy wystąpił błąd w formularzu rejestracyjnym czy nie.
Ona musi się dlatego wykonać w skrypcie php razem z echo $error; i zmienić class tego diva.
Czyli znowu jestem na początku:/
Go to the top of the page
+Quote Post
#luq
post 18.07.2009, 11:01:00
Post #12





Grupa: Zarejestrowani
Postów: 589
Pomógł: 91
Dołączył: 22.05.2008
Skąd: Gliwice

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


A co za problem napisać tak:
Kod
if( oRequest.readyState == 4 ){
    if( oRequest.responseText ){
        error_window('error');
    }
}


Wtedy gdy $error == '' nic się nie stanie


--------------------
Moja gra - scraby.io
Go to the top of the page
+Quote Post
qbas-s
post 18.07.2009, 19:50:44
Post #13





Grupa: Zarejestrowani
Postów: 304
Pomógł: 1
Dołączył: 28.06.2009

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


Dzięki o to mi chodziło:)
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 Wersja Lo-Fi Aktualny czas: 13.08.2025 - 23:19