![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam taki oto kod.
Wlasciwosc oDebud przechowuje mi diva, chcialbym sie do niego odwolac z metody obiektu, jednak jak zdazylem zauwazyc uzywanie slowa kluczowego this. nie odnosci skutku gdyz this dla metody jest juz odwolaniem do metody samej w sobie. Efekt tego taki ze pierwszy alert podaje mi prawidlowo diva drugi juz niestety undefined. Stad pytanie, w jaki sposob moge sie odwolac do wlasciwosci 'klasy/obiektu' (jesli mozna to tak nazwac) z metody owego obiektu/klasy ? Calosc znajduje sie tutaj Ten post edytował thornag 25.01.2007, 14:06:39 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Używaj poprawnego bbcode.
Co do problemu: this jest refrencją do kontenera. Aby wszystko działało musisz jeszcze podać obiekt (div) bo metodę robisz dla niego, a nie dla kontenera. zamiast: Kod this.OnMouseDown to: Kod this.oDebug.OnMouseDown poza tym: Kod alert(this.oDebug); takie coś nie przejdzie bo odwołujesz się z metody obiektu, więc referencją do obiektu z wewnątrz metody będzie this.Kod alert(this);
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 504 Pomógł: 2 Dołączył: 31.03.2006 Skąd: Londyn Ostrzeżenie: (0%) ![]() ![]() |
Bb dla php uzylem bo koloruje przynajmniej keywordy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Co do problemu. Ja nie tworze tej metody dla diva. Mam sobie obiekt DragAndDrop, i on ma wlasiwosc oDebug (czyli ten Div), w srodku metody OnMouseDown chce sobie to tylko zdebugowac. Pozatym nie tylko o to chodzi. DragAndDrop ma tez wlasciwosc this.DragableClassName, i w metodzie OnMouseDown chce skorzystac z tej wlasciwosci poprzez this.DragableClassName - undefined. Stad wniosek ze w OnMouseDown uzycie this. wskazuje juz na OnMouseDown, co smieszne w innym skrypcie tez tak robilem i dziala (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif) / Z Twojej odpowiedzi nie potrafie niestety wyciagnac informacji niezbednej do naprawienia kodu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Moze postaram sie jeszcze prosty przyklad podac. Kod function A() { this.Property = 'string'; this.Method = function(element) { var target = element.target; if(target.className == this.property) return true; return false; } document.onmousedown = this.Method; } teraz kiedy stworze diva z klasa string to przy kliknieciu nigdy nie zwroci mi to true poniewaz wewnatrz metody Method this.property ma wartosc undefined. Troche to zamotane ze mnie jest z tymi kontenerami. Jakbym mogl prosic jeszcze raz jak do dziecka albo jakis dobry tutorial (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Ten post edytował thornag 25.01.2007, 14:34:19 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 0 Dołączył: 7.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
Odwołanie do rodzica ? parentNode
Ale zamotany ten skrypt, napisz co chcesz osiągnąć, będzie łatwiej. Ten post edytował lopik 27.01.2007, 16:21:37 |
|
|
![]()
Post
#5
|
|
Grupa: Przyjaciele php.pl Postów: 2 258 Pomógł: 16 Dołączył: 21.09.2004 Skąd: Kielce Ostrzeżenie: (0%) ![]() ![]() |
Problem wydaje się być taki, że this nie referuje do obiektu tylko do dokumentu. Nie zagłębiałem się w to dokładniej, ale rozwiążesz to wyrzucając metody odwołujące się do pól obiektu poza obiekt,wiem że to zamotane, ale innego wyjścia chyba nie masz.
Kod <script type="text/javascript"> function TCore_DragAndDropObject() { this.iStartX = 0; this.iStartY = 0; this.iOffsetX = 0; this.iOffsetY = 0; this.oDragElement; this.iOldZIndex = 0; this.oDebug = document.getElementById('debug'); this.sDragableClassName = 'DragableElement'; } function init() { var oDragAndDrop = new TCore_DragAndDropObject; document.onmousedown=function(e) { if (!e) { e = window.event; } var oTarget = e.target != null ? e.target : e.srcElement; oDragAndDrop.oDebug.innerHTML = oTarget.className == this.sDragableClassName ? 'dragable' : 'dragable' } } a potem wywołasz tylko init(). |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 14:24 |