![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 253 Pomógł: 1 Dołączył: 26.08.2009 Skąd: Szczecin Ostrzeżenie: (10%) ![]() ![]() |
Mam problem z pewnym skryptem, a raczej z dwoma jego funkcjami. Wyglądają one następująco:
Kod resizeObject: function(){ var elementWidth = ddEl.offsetWidth; var elementHeight = dd.El.offsetHeight; var links = dd.El.getElementsByTagName('a'); var keyLink = links[links.length-1]; keyLink.style.display = "none"; dd.El.style.border = '2px red dashed'; var resizeLink = links[links.length-2]; resizeLink.relatedElement = dd.El; removeEventSimple(resizeLink,'cick',dd.resizeObject); console.log('off - resize(837): '+dd.El.id); addEventSimple(resizeLink,'click',dd.endResizeObject); console.log('on - endResize(839): '+dd.El.id); resizeLink.style.marginLeft = elementWidth/2+'px'; removeEventSimple(dd.El,'mousedown',dd.startDragMouse); }, endResizeObject: function(){ var links = dd.El.getElementsByTagName('a'); var keyLink = links[links.length-1]; keyLink.relatedElement = dd.El; keyLink.style.display = ''; dd.El.style.border = '0px'; var resizeLink = links[links.length-2]; resizeLink.relatedElement = dd.El; removeEventSimple(resizeLink,'click',dd.endResizeObject); console.log('off - endResize(853): '+dd.El.id); addEventSimple(resizeLink,'click',dd.resizeObject); console.log('on - resize(855): '+dd.El.id); resizeLink.style.marginLeft = 0; addEventSimple(dd.El,'mousedown',dd.startDragMouse); }, Chodzi o to, że na obiekcie jest przycisk (link) który na początku skryptu ma przypisane zdarzenie click do funkcji resizeObject. Po kliknięciu powinien jednak to przypisanie kasować i przypisywać funkcje endResizeObject. Jednak tego nie robi. Przynajmniej ja tego nie zauważyłem. Zamiast tego - obserwując co się dzieje w debugerze zobaczyłem, że po zakończeniu funkcji resizeObject i ponownym kliknięciu na link znowu wykonuje ta samą funkcję - zupełnie nie uruchamia funkcji endResizeObjcet. Wydaje mi się (jednak nie jestem ekspertem w JS), że może to być problem z pozostałością czegoś w buforze zdarzeń, ale wtedy chyba powinienem coś zobaczyć wykonując skrypt krok po kroku. Bardzo proszę o jakąś podpowiedź, gdzie jest błąd, bo już pomału zaczyna mnie to denerwować. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 958 Pomógł: 574 Dołączył: 23.09.2008 Skąd: wiesz, że tu jestem? Ostrzeżenie: (0%) ![]() ![]() |
removeEventSimple(resizeLink,'cick',dd.resizeObject) powinno być 'click' (IMG:style_emoticons/default/smile.gif)
Ten post edytował CuteOne 30.09.2011, 11:47:24 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 253 Pomógł: 1 Dołączył: 26.08.2009 Skąd: Szczecin Ostrzeżenie: (10%) ![]() ![]() |
No i właśnie tak sądziłem, że musi być coś zupełnie głupiego. Jednak to prawda, że niektórych błędów samemu nie da się wypatrzyć. Jeszcze raz wielkie dzięki.
Jeszcze jedna sprawa, nie napisałem tego tutaj bo myślałem, że jak naprawię ten błąd, to naprawi się wszystko no ale się myliłem. Każdy obiekt jest dodawany w mniej więcej taki sposób: Kod newElement = document.createElement('div'); newElementId = 'div'+i; newElement.setAttribute('id',newElementId); document.body.appendChild(newElement); newElement.style.position = 'absolute'; newElement.style.width = "100px"; newElement.style.height = "100px"; newElement.style.left = positionX+'px'; newElement.style.top = positionY+'px'; newElement.style.background = "#E6E6E6"; newElement.style.cursor = "move"; dd.initElement(newElement, container); W funkcji dd.initElement (która jest wywoływana tylko i wyłącznie raz) w taki sposób przypisuję link do funkcji resizeElement: Kod var links = element.getElementsByTagName('a'); var keyLink = links[links.length-1]; keyLink.relatedElement = element; addEventSimple(keyLink,'click',dragDrop.startDragKeys); var resizeLink = links[links.length-2]; resizeLink.relatedElement = element; addEventSimple(resizeLink,'click',dragDrop.resizeObject); A potem są te dwie funkcje, które już napisałem. Moje pytanie, jest następujące - jaki może być powód tego, że dwa linki (na dwóch różnych obiektach) nagle się "zmieniają" i odnoszą się do jednego. Taka sytuacja pojawia się, gdy oba są aktywne, czyli po kliknięciu. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.09.2025 - 06:04 |