![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 184 Pomógł: 13 Dołączył: 7.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
W głównym oknie mam skrypt otwierający nowe, mniejsze okno.
Chcę aby jednocześnie przy otwieraniu nowego okna do diva (w tym nowym oknie) o id 'komunikat' wskoczyła zawartość zmiennej 'tresc', która została zdefiniowana w skrypcie w tym pierwszym oknie. pozdrawiam Ten post edytował windman 13.03.2008, 18:22:16 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 603 Pomógł: 131 Dołączył: 24.07.2007 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
http://forum.php.pl/index.php?showtopic...
Drugą linijkę zamien na
-------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 184 Pomógł: 13 Dołączył: 7.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki!
W ten sam sposób kombinowałem zanim napisałem, musiałem mieć gdzieś błąd bo okno się otwierało ale div nie był uzupełniany, teraz już jest OK. Pozdrawiam A jednak nie jest tak jak być powinno. Raz działa, raz nie. Czasem wyskakuje błąd: document.getElementById() jest pusty lub nie jest obiektem wydaje mi się, że problem tkwi w tym, że to nowe okno nie zawsze otworzy się na czas aby skrypt mógł odnaleźć dane ID. Co o tym myślicie? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 603 Pomógł: 131 Dołączył: 24.07.2007 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Może timeout? Zamien 2 linijkę na:
Kod setTimeout("win.document.getElementById('twoje_id').innerHTML=twoja_zmienna;",1000); Jeśli problem jest w opóźnieniu to powyższe rozwiązanie może pomóc, ale to nie 100%-owo dobre rozwiązanie => problem pojawi się jeśli okienko będize się otwierać dłużej niż sekunda. Dłuższe (ale i zapewniające 100% pewność) rozwiązanie: sprawdzanie czy okno się otwarło (lub czy istnieje w nowym oknie ów div) tak długo, aż zaistnieje;po czym wstawienie zawartości zmiennej. -------------------- |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 184 Pomógł: 13 Dołączył: 7.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Dłuższe (ale i zapewniające 100% pewność) rozwiązanie: sprawdzanie czy okno się otwarło (lub czy istnieje w nowym oknie ów div) tak długo, aż zaistnieje;po czym wstawienie zawartości zmiennej. Rozumiem, że będzie tutaj potrzebna jakaś pętelka, mógłbyś coś podrzucić? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 603 Pomógł: 131 Dołączył: 24.07.2007 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Na myśli miałem co poniżej. Wstaw zamiast 2. linijki: zmien();
Kod function zmien() { var tmp=win.document.getElementById('twoje_id'); if (tmp == null) //div jeszcze nie utworzony setTimeout("zmien();",500); else //div istnieje tmp.innerHTML=twoja_zmienna; } Pisane z palca, możliwe literówki i drobne błędy. Ten post edytował lord_t 13.03.2008, 19:36:53 -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 184 Pomógł: 13 Dołączył: 7.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
ręce mi już opadaj, przecież to musi działać!!!
metodę z pętlą mam tak:
Okno się otwiera ale wyskakuje: zmien is not defined, ale tutaj mogłem coś namieszać... Natomiast przykład z opóźnieniem:
i tutaj dostaje komunikat: win is not defined |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 603 Pomógł: 131 Dołączył: 24.07.2007 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Bije się w pierś bo zapomniałem, że win musi być dostępne przy każdym wywołaniu zmien(); Poprawiony i działający kod:
Ten post edytował lord_t 13.03.2008, 21:59:43 -------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 184 Pomógł: 13 Dołączył: 7.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Bije się w pierś bo zapomniałem, że win musi być dostępne przy każdym wywołaniu zmien(); Poprawiony i działający kod: Teraz faktycznie jest ok, dzięki! Napisz jeszcze proszę co jest skopane w tym przykładzie z opóźnieniem setTimeout - przyda się na przyszłość. pozdrawiam |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 603 Pomógł: 131 Dołączył: 24.07.2007 Skąd: Górny Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Tam błąd polegał (na 99%) na tym samym co w poprawianym kodzie: win jest widziane tylko w funkcji, a setTimeout wywoła to już poza funkcją => win tam już nie widać.
-------------------- |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 02:38 |