Witam,

Mam pewien problem ze skryptem który aktualnie piszę. Posiadam takie oto dwie "uniwersalne funkcje:
Kod
function addEventSimple(obj,evt,fn) {
    if (obj.addEventListener)
        obj.addEventListener(evt,fn,false);
    else if (obj.attachEvent)
        obj.attachEvent('on'+evt,fn);
}

function removeEventSimple(obj,evt,fn) {
    if (obj.removeEventListener)
        obj.removeEventListener(evt,fn,false);
    else if (obj.detachEvent)
        obj.detachEvent('on'+evt,fn);

Jak widać, jedna dodaje zdarzenie w zależności od tego czy przeglądarka obsługuje on coś tam czy bez on. Druga to usuwa.
I właśnie z tymi funkcjami, a raczej z ich wykorzystaniem mam problem. Chodzi o to, że w niektórych momentach gdy je dodam do kodu to nie działają (albo nie zupełnie, albo w ogóle).
Oto parę przykładów - nie wklejam całego kodu bo jest on dosyć długi i nie chcę zaśmiecać postu):
Kod
//1
//addEventSimple(el,'mousedown',DD.startDragMouse);
                el.onmousedown = DD.startDragMouse;
//2
var links = el.getElementsByTagName('a');
        var keyLink = links[links.length-1];
        keyLink.relatedElement = el;
        addEventSimple(keyLink,'click',DD.startDragKeys);
//3
var markerLink = links[links.length-2];
                markerLink.relatedElement = element;
                addEventSimple(markerLink,'click',DD.editMarkers);
//4
removeEventSimple(markerLink,'cick',DD.editMarkers);
addEventSimple(markerLink,'click',DD.endEditMarkers);
//5
removeEventSimple(markerLink,'click',DD.endEditMarkers);
addEventSimple(markerLink,'click',DD.editMarkers);
DD.deleteMarkers();

To jest parę przykładów. W takiej kolejności w jakiej zostały przedstawione występują w skrypcie, jednak najczęściej nie w tych samych metodach. Teraz opiszę każdy z elementów, bo tego tutaj brakuje:
1. W momencie gdy używam opcji, która jest aktualnie skomentowana wtedy nie działa mi jeden ze styli obiektu - wygląd kursora. Jeśli użyję wersji która jest aktualnie używam wszystko jest ok.
2. Jest to link na obiekcie, który uruchamia poruszanie klawiaturą - ta opcja działa (w obu przypadkach).
3. Również dodaję do obiektu link który uruchamia opcje związana z markerami - działają obie opcje *ten fragment jest bezpośrednio po zawartości 2)
4. Doszedłem do wniosku, że najpierw muszę usnąć jedną akcję, żeby dodać drugą (w sumie jest to logiczne) - nie jestem jednak pewien czy przypadkiem nie tutaj jest błąd gdzieś, bo bo wszystko niby działa, ale...
5. W tym fragmencie już nie usuwa markerów (czyli nie uruchamia całej funkcji deleteMarkers - co gorsza nie wyświetla mi żadnego błędu): funkcja ta wygląda tak:
Kod
deleteMarkers: function() {
            var marker;
            for(i=1;i<=8;i++)
            {
                marker = document.getElementById('m'+i+DD.El.id);
                if(marker != null)
                {
                    DD.El.removeChild(marker);
                }
            }
        },

Jeśli natomiast zrobię coś takiego:
Kod
deleteMarkers: function() {
            var marker;
            for(i=1;i<=8;i++)
            {
                marker = document.getElementById('m'+i+DD.El.id);
                if(marker != null)
                {
                    info.innerHTML = marker;
                }
            }
        },

Zgodnie z założeniem wyświetla mi ostatni marker.
Ma ktoś może jakiś pomysł co robię źle w tym skrypcie? Dodam tylko, że to nie są wszystkie przypadki, ale wydaje mi się, że jak rozwiążę problem tego, że funkcja raz działa a raz nie to resztę już zrobię sam.