Przygoda z JavaScript

Dział poświęcony JavaScriptowi - tworzeniu dynamicznym stron WWW.
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Przygoda z JavaScript

Post przez Morfidon »

this odwołuje się w tym wypadku do obiektu, który wywołał zdarzenie onmouseover.
tajger
Zaawansowany
Zaawansowany
Posty: 223
Dołączył(a): niedziela, 11 marca 2012, 03:08
Lokalizacja: Poland
Contact:

Re: Przygoda z JavaScript

Post przez tajger »

1. To obiektem będzie znacznik <p> czy cała ta linia?
2. Przypisując do zdarzenia funkcję, tym samym tworzymy obiekt ? I wtedy odwoływać się do niego możemy za pomoć this? Tak to mam rozumieć, bo w PHP troszkę inaczej to wygląda.
Zawsze walcz do końca i nigdy się nie poddawaj!
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Przygoda z JavaScript

Post przez Morfidon »

1. Element p i to co się w nim znajduje, a właściwie po prostu obszar elementu p.
2. Ogólnie funkcje w javascript są w tym samym momencie obiektami, mi się też to mieszało na starcie. this z ang. to "ten", więc korzystając z this intuicyjnie odwołujesz się do "tego" obiektu co wywołało dane zdarzenie.
tajger
Zaawansowany
Zaawansowany
Posty: 223
Dołączył(a): niedziela, 11 marca 2012, 03:08
Lokalizacja: Poland
Contact:

Re: Przygoda z JavaScript

Post przez tajger »

Troszkę mi się to myliło. Czyli żeby odwoływac się do tego obiektu gdzie zostało wykonanie jakeiś zdarzenie lub przypisana została funkcja po prostu używamy this, a nie już p. Bo naprzemian używanie this a np. obiektu czyli p. to czasami różnie wychodzi, na thisie zawsze są dobre wyniki, a na p już nie. Tylko tego teraz nie rozumiem. O co mi chodzi:

Code: Zaznacz cały

p.onmouseover = function()
{
    this.innerHTML = "Tekst2";
}
Kod jest ok, ale teraz pod this podstawiwamy p. I czasami to działa dobrze w innych funkcjach a czasami nie. Niech to szlaaaag. :D
Zawsze walcz do końca i nigdy się nie poddawaj!
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Przygoda z JavaScript

Post przez Morfidon »

No będzie działać tam gdzie p istnieje, a niekoniecznie musi istnieć, poza tym korzystaj z konstrukcji this ponieważ wtedy jesteś pewien, że odwołujesz się do obiektu, który wywołał zdarzenie. Zawartość zmiennej można zawsze zmienić.
tajger
Zaawansowany
Zaawansowany
Posty: 223
Dołączył(a): niedziela, 11 marca 2012, 03:08
Lokalizacja: Poland
Contact:

Re: Przygoda z JavaScript

Post przez tajger »

Co zrobić, aby w funkcji widział mi zmieną div[i+1]?

Code: Zaznacz cały

    var faq = document.getElementById('faq');
    var div = faq.getElementsByTagName('div');
    
    for(var i=0, max=div.length; i<max; i++)
    {
        if(div[i].className == 'question')
        {

            div[i].onclick = function()
            {
               div[i+1].className = 'info2';   <--------------------------------
            }
        }
    }
Męczę nie nad tym i nie mogę znaleźć rozwiązania. Chodzi o to, że po kliknięciu pewnego DIVa, chce zmienić kolejny div+1, czyli zaraz pod nim (nadać mu klasę). Kod jest ślepy i nie widzi wogóle zmiennej i. Widzę, że to działa jak funkcja, ale jak sprawić, żeby zobacyzł moją zmienną i w funkcji onclick?
Zawsze walcz do końca i nigdy się nie poddawaj!
Morfidon
Administrator
Administrator
Posty: 1332
Dołączył(a): wtorek, 5 sierpnia 2008, 21:48
Contact:

Re: Przygoda z JavaScript

Post przez Morfidon »

Nie widzi i, czy diva? Spróbuj usunąć "var" przed divem. Co wypisuje alert(div) przed pętlą for?
tajger
Zaawansowany
Zaawansowany
Posty: 223
Dołączył(a): niedziela, 11 marca 2012, 03:08
Lokalizacja: Poland
Contact:

Re: Przygoda z JavaScript

Post przez tajger »

Problem rozwiązany. Musiałem przekazać do funkcji te wartości aby poprawnie wyświetlalo.
Zawsze walcz do końca i nigdy się nie poddawaj!
Post Reply