Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] Funkcja działająca tylko pod IE
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
mokry
Witam,
Mam mały problemik.

W sekcji head dokumentu html mam umieszczony następującą funkcję
  1. <script type="text/javascript">
  2. function Lustro_toggle(div_id, img_src) {
  3. var div_id;
  4. var img_src;
  5. if(document.getElementById(div_id).style.background == 'url(files/images/domki/' + img_src + ')') {
  6. document.getElementById(div_id).style.background = 'url(files/images/domki/v_' + img_src + ')';
  7. }
  8. else {
  9. document.getElementById(div_id).style.background = 'url(files/images/domki/' + img_src + ')';
  10. }
  11. }


Wywoływana jest ona przez pętlę w Smarty:
  1. {foreach item=w key=k from=$projects}
  2. <div class="domek_big" id="domek_{$k}" style="background:url(files/images/domki/{$w.project_img});" title="&nbsp;pow. netto: {$w.project_pow_netto}m&lt;sup&gt;2&lt;/sup&gt;">
  3. <div class="powierzchnia">pow. użytk. {$w.project_pow_uzy}m<sup>2</sup></div>
  4. <div class="nazwa">{$w.project_name|stripslashes}</div>
  5. <div class="lustro"><a href="#" onclick="Lustro_toggle('domek_{$k}','{$w.project_img}');"><img src="templates/images/button_lustro.gif" width="59" height="21" alt="Odbicie lustrzane" /></a></div>
  6. </div>
  7. {/foreach}


Powyższy kod działa mi jednak tylko pod IE... Co zrobić, gdzie mam błąd, że Firefox i Opera nie wykonują kodu, ale i również nie generują żadnych błędów przy próbie jego wykonania?

Pozdrawiam,
Michał M.
nevt
wywal te deklaracje zmiennych:
Kod
    var div_id;
    var img_src;

przecież w ten sposób nadpisujesz parametry przekazywane do funkcji...
mokry
Wcześniej ich nie było. Efekt ten sam...
nevt
brakuje ci ograniczników łańcucha ze ściezką do obrazka...
zamiast:
Kod
'url(files/images/domki/' + img_src + ')'

powinieneś mieć:
Kod
"url('files/images/domki/" + img_src +"')"
//albo
'url("files/images/domki/' + img_src + '")'

oczywiście pozamieniaj we wszystkich wystąpieniach...
gekon
Jeżeli chcesz zmienić tylko obrazek tła to lepiej zrób tak (Twoja wersja usuwa wszystkie wartości z backgorund):
  1. function Lustro_toggle(div_id, img_src) {
  2. var node = document.getElementById(div_id);
  3.  
  4. if(node.style.backgroundImage == "url(files/images/domki/" + img_src + ")"){
  5. node.style.backgroundImage = "url(files/images/domki/v_" + img_src + ")";
  6. } else {
  7. node.style.backgroundImage = "url(files/images/domki/" + img_src + ")";
  8. }
  9. return false;
  10. }
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.