Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Opera <DIV> display problem
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Rzepa
Hej,
Na stronie mam formularz, a w nim pole:
  1. <div id="emots" style="width=400; display: none; border:0px solid #000000; padding:0px; position:relative;">
  2. /* ... */
  3. </div>

Mam też skrypt, który to pole ukrywa, bądź pokazuje:
  1. function TogDis(obj)
  2. {
  3. if(obj.style.display=='none') obj.style.display=''
  4. else obj.style.display='none'
  5. }

Funkcja podpięta jest pod guzik. W IE wszystko działa pięknie, a w Operze, Netscapie itd. <div> pokazuje się na chwilę, po czym znika. Moja teoria na ten temat jest taka, że po odpaleniu skryptu strona się odświeża i ustawia temu <div>'owi znowu display: none, tak jak było na dzień dobry.
Jak tego uniknąć?
Dzięki,
Rzepa.

P.S. Sprawdziłem - problem na pewno jest z odświeżaniem - cała strona się przeładowuje.
revyag
Pokaż jak używasz tej funkcji w guziku.
Rzepa
  1. <button BUTTON class=guzik style="position:relative;" onFocus="blur()" title="Wstaw emotikonki" onClick="TogDis(emots);">&nbsp;&nbsp;Emot&nbsp;&nbsp;</button>
revyag
Ok smile.gif.
To najpierw modyfikacja funkcji
Kod
<script type="text/javascript">
function TogDis(obj){
    if(document.getElementById(obj).style.display=="none") document.getElementById(obj).style.display="";
    else document.getElementById(obj).style.display="none";
}
</script>

  1. <button class=guzik style="position:relative;" onFocus="blur()" title="Wstaw emotikonki" onClick="TogDis('emots')">&nbsp;&nbsp;Emot&nbsp;&nbsp;</button>

No i taka uwaga, dublujesz sobie kod, możesz przecież w klasie guzik ustawić position dla buttona, i atrybut style będzie niepotrzebny.
Poza tym w divie masz coś takiego style="width=400" to błąd smile.gif powinno być tak style="width:400px"
Rzepa
Dzięki smile.gif ,
to niestety nie rozwiązało mojego problemu. Zapomniałem dodać, że strona jest generowana przez php. Coś powoduje, że jest odświeżana, czyli cały skrypt .php leci jeszcze raz i ustawia temu div'owi atrybut display tak, jak jest to domyślnie na początku... sadsmiley02.gif

W nagłówku mam takie coś:
  1. <META HTTP-EQUIV="Pragma" CONTENT="no-cache">


Może to jest przyczyną?
revyag
Naciśnięcie buttona nie może spowodować przeładowania strony, jeśli nie ma tego w skrypcie, który przy tej akcji jest wykonywany. Strona sama z siebie się nie odświeży smile.gif. Ten wpis w nagłówku określa, że przeglądarka nie będzie zapamiętywać strony w pamięcie podręcznej, więc to nie to.
Może masz coś dodatkowo wykonywane podczas naciskania buttona ?
Rzepa
Ciekawe - zamieniłem buttona na zwykły <a href=...> i działa bez odświeżania. blink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.