Timo "God's Boss" Reitz: String in Befehle umwandeln

Beitrag lesen

Ich weiß nicht genau, was du mit "deine ursprüngliche Funktion" meinst. Ich habe jetzt folgenden Code versucht:

function mouseoverSperren(){
var onmouseoverAlt;
var elem = document.getElementsByTagName('DIV');
for(var i = 0; i < elem.length; i++) {
  if(elem[i].onmouseover) {
   onmouseoverAlt=elem[i].onmouseover;
   elem[i].onmouseout=function(){
    if (gesperrt) return;
    onmouseoverAlt();
   }
  }
}
}

Da sehe ich schon auf den ersten Blick, dass du einen Closure generiert hast, den du so sicher nicht wolltest. Alle onmouseover-Funktionen rufen nun die alte onmouseover-Funktion des letzten Elements auf.  
  

> aber das ursprüngliche Problem bleibt bestehen; statt der tatsächlichen alten onmouseover-Funktion steht innnerhalb der Bedingung dann einfach "onmouseoverAlt();", was natürlich nichts bringt.  

Wo "steht" das? Falls du "function(){if (gesperrt){return;}; onmouseoverAlt();}" meinst, das ist so korrekt. Die alte Funktion wird nicht in die neue hineingefügt, sondern von dieser aufgerufen.

-- 
Reden ist Silber, Schweigen ist Gold, meine Ausführungen sind Platin.  
  
Self-Code: sh:( ch:? rl:( br:> n4:( ie:{ mo:) va:) de:> zu:} fl:| ss:| ls:~ js:|