![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 574 Pomógł: 2 Dołączył: 13.04.2004 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Mam sobie funkcję, która przypisuje obrazkom, w sposób dynamiczny akcje po najechaniu i zjechaniu myszką:
Kod function change( id, img, url, kid ) { var tab = new Array(); tab[0] = './images/k_demo_on.jpg'; tab[1] = './images/k_makler_on.jpg'; tab[2] = './images/k_ekomako_on.jpg'; tab[3] = './images/k_biuro_on.jpg'; for(var z=1;z<=4;z++) { if( z == kid ) { document.getElementById('kb' + z).src = tab[z-1]; document.getElementById('kb' + z).onmouseover = function() { changePic( z, false, false ); } document.getElementById('kb' + z).onmouseout = function() { changePic( z, false, false ); } } else { document.getElementById('kb' + z).onmouseover = function() { changePic( z, true, false ); } document.getElementById('kb' + z).onmouseout = function() { changePic( z, false, true ); } } } } Problem powiaja się w warunku ELSE, gdzie zmienna "z" zawsze przyjmuje wartość "5" ;/. Czy wie ktoś dlaczego się tak dzieje? pozdr, Ten post edytował shpyo 21.06.2007, 14:28:08 -------------------- jQuery, JavaScript i CSS - porady, tutoriale
highlab.pl - blog o technologiach, nauce i programowaniu |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 229 Pomógł: 0 Dołączył: 29.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
dzieję się tak ponieważ funkcja zdefiniowania dla zdarzenia onmouseover pobiera wartość zmiennej z, po zakończeniu w/w pętli z zawsze masz wartość 5 więc wszędzie gdzie został przypisana ta funkcja zostanie ona wywołana z argumentem 5,
1. lepiej używać funkcji addEvent() 2. skoro twoje elementy mają wspólny początek możesz podczas wywoływania pobierać ich numer
i w funkcji changePic usuń pierwszy argument i na początku np dodaj
i teraz w funkcji wykorzystuj idk (oczywiście możesz sobie zmienić nazwę) p.s. wersja z funkcją addEvent()
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 14:27 |