Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][JavaScript] Problem z onmouseover i out przy window.onload
Forum PHP.pl > Forum > Przedszkole
thomson89
Witam!

Mam prosty kodzik w js:
  1. window.onload = podlinkuj;
  2.  
  3. function podlinkuj()
  4. {
  5. document.getElementById('login').onmouseover = zmienOpis('1');
  6. document.getElementById('login').onmouseout = zmienOpis('0');
  7. document.getElementById('imie').onmouseover = zmienOpis('2');
  8. document.getElementById('imie').onmouseout = zmienOpis('0');
  9. }
  10.  
  11. function zmienOpis(liczba)
  12. {
  13. var opis = document.getElementById('opis_form');
  14. var opisy = new Array('', 'jakis opis jeden', 'jakis opis dwa');
  15. opis.innerHTML = opisy[liczba];
  16. }


Który nie działa prawidłowo.

Po wczytaniu strony funkcja zmienOpis(); jest wykonywana mimo warunku onmouseover. Dlaczego tak się dzieje?
ziqzaq
Pierwsza rzecz:
[JAVASCRIPT] pobierz, plaintext
  1. var opisy = new Array('', 'jakis opis jeden', 'jakis opis dwa');
[JAVASCRIPT] pobierz, plaintext

Powyższa tablica ma indeksy liczbowe więc nie możesz przekazywać do funkcji ciągu znaków (np. '1') i robić "opisy[liczba];" bo twoja "liczba" to nie jest liczba tylko numeryczny ciąg znaków.
Druga sprawa:
[JAVASCRIPT] pobierz, plaintext
  1. // 2a.
  2. document.getElementById('login').onmouseover = zmienOpis('1');
  3. // 2b.
  4. document.getElementById('login').onmouseover = zmienOpis;
  5. // 2c.
  6. document.getElementById('login').onmouseover = function () { zmienOpis(1) };
[JAVASCRIPT] pobierz, plaintext

ad. 2a) To jest wywołanie fukcji. Dlatego wykonuje ci się ona przy załadowaniu strony.
ad. 2b) To jest przekazanie referencji do funkcji. Wykona się ona przy zdarzeniu onmouseover. Niestety nie jestem specem od JS, ale chyba nie da się przekazać argumentów do tej funkcji.
ad. 2c) Tutaj też referencja tylko do anonimowej funkcji by można było wywołać twoją funkcję z odpowiednim argumentem (zauważ, że argumentem jest liczba).

Po lekkich przeróbkach (wyżej masz wskazówki) skrypcik będzie "chulał jak ta lala". winksmiley.jpg
Pozdrawiam.
thomson89
Dziekuję. Działa.
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.