mrjerk: javascript kompatibilitätsproblem

Beitrag lesen

Hallo,
Eine Möglichkeit wäre, dass Du Deine "over" und "out"-Funktionen in die Schleife in dem JavaScript schreibst, und sie dann nur für das letzte (also das 8.) Element ausfürhst:

  
// Nummer des letzten Elements  
var LAST_LI_NUMBER = 7;  
  
for (var i=0; i<getElm.length; i++) {  
   getElm[i].onmouseover=function() {  
       this.className+=" iehover";  
       if (i == LAST_LI_NUMBER) {over();}  
   }  
   getElm[i].onmouseout=function() {  
	this.className=this.className.replace(new RegExp(" iehover\\b"), "");  
        if (i == LAST_LI_NUMBER) {out();}  
   }  
}  

Das müsste als Quick & Dirtly-Lösung funktionieren.

Wenn man es sauber aufsetzen will, müsste man vielleicht sowas wie einen kleinen Event-Manager basteln, bei dem sich MouseOver und Mouseout-Funktionen registrieren müssen.

So als Entwurf (ungetestet und geht sicher auch schöner):

  
function MyEventManager (element) {  
   this.onMouseOver = new Array();  
   this.onMouseOut = new Array();  
   element.onMouseOver = function () {this.handleEvents('onMouseOver');}  
   element.onMouseOut = function ()  {this.handleEvents('onMouseOut');}  
}  
MyEventManager.prototype.handleEvents (eventType) {  
   for (var i = 0; i < this[eventType].length; i++) {  
       this[eventType][i]();  
   }  
}  
MyEvenetManager.prototype.registerFunction (func, eventType) {  
   this[eventType].push(func);  
}  
  
  
var events = new MyEventManager(document.getElementById("someElement"));  
events.register(function () {alert("mOUSEoVER");}, 'onMouseOver');  
events.register(function () {alert("MouseOut");}, 'onMouseOut');