29-01-2012, 01:11
Problem wygląda tak: mam funkcję, która rejestruje zdarzenia:
I funkcję, która je odrejestrowuje:
Następnie wykonuje:
.
W tym wypadku zdarzenie nie jest odrejestrowane. Udaję się tylko, gdy zmienna 'a' jest globalna. I moje pytanie brzmi-czy można to obejść? Tzn przekazać zmienną innej funkcji ale nie zmieniać jej na globalną?
Kod:
function addEvent(element, event, fn){
if(element.addEventListener){
element.addEventListener(event, fn, false)
}else if(element.attachEvent){
element.attachEvent('on'+event, fn);
}
}
Kod:
function removeEvent(element, event, fn){
if(element.addEventListener){
element.removeEventListener(event, fn, false)
}else if(element.attachEvent){
element.detachEvent('on'+event, fn);
}
}
Kod:
function handlerOff(){
removeEvent(a,'click', handlerOff);
}
function Init(){
var a=document.getElementsByTagName('a')[0];
addEvent(a,'click', handlerOff);
}
addEvent(window, 'load', Init)
W tym wypadku zdarzenie nie jest odrejestrowane. Udaję się tylko, gdy zmienna 'a' jest globalna. I moje pytanie brzmi-czy można to obejść? Tzn przekazać zmienną innej funkcji ale nie zmieniać jej na globalną?