Hi, eine kleine Erweiterung zu meinem letzten Post:
ich will in einer Klasse zb. allen Links in einer Liste (Navigation) eine Funktion zuordnen, die dann per this-Zeiger auf den Link zugreifen kann.
Dank Blackgreetz klappt das auch, aber IE macht natürlich wieder Mucken.
Zum einen kennt IE (7) nicht addEventListener, so das ich mir eine Hilfsfunktion _addEventListener(element, event, handler) gesucht habe
Die Funktion _addEventListener(element, event, handler):
mein Problem:
IE kommt mit this nicht zurecht:
Korrekt wäre ja:
und foo dann:
macht FF tadellos, IE meldet Object Error....
Kennt einer eine DOM entsprechende, auch im IE funktionierende Lösung....
Will nicht auf <a href="#" Menu.foo(this) /> zurückfallen wollen...
ich will in einer Klasse zb. allen Links in einer Liste (Navigation) eine Funktion zuordnen, die dann per this-Zeiger auf den Link zugreifen kann.
Dank Blackgreetz klappt das auch, aber IE macht natürlich wieder Mucken.
Zum einen kennt IE (7) nicht addEventListener, so das ich mir eine Hilfsfunktion _addEventListener(element, event, handler) gesucht habe
PHP-Code:
// zuweisen einer Funktion innerhalb einer Methode
var basisNode = document.getElementById("navigation");
var links = basisNode.getElementsByTagName("a");
for(i=0; i<links.length; i++){
_addEventHandler(links[i], "mouseover", foo);
// links[i].addEventListener("mouseover", foo, false);
}
PHP-Code:
function _addEventHandler(element, event, handler) {
var _tmp, _onevent;
if (!element || !event )
return false;
if (element.addEventListener) { // DOM-konform
element.addEventListener(event, handler, false);
}else {
_onevent = 'on'+event;
if (element.attachEvent){ // IE
element.attachEvent(_onevent, handler);
}
}
}
IE kommt mit this nicht zurecht:
PHP-Code:
function foo(){ alert('');} // IE ist brav
function foo(){ this.style.backgroundColor="red"; alert('');}
// IE macht nicht das alert() und wirft auch keinen Fehler
// Interessanter weise führt FF this.style aus
PHP-Code:
// zuweisen der funktion:
var links = basisNode.getElementsByTagName("a");
for(i=0; i<links.length; i++){
_addEventHandler(links[i], "mouseover",function(ev){foo(this);});
// links[i].addEventListener("mouseover", foo, false);
}
PHP-Code:
function foo(obj){
try{
obj.style.backgroundColor="red"; //IE meldet Object Error.
alert('');
}catch(e){alert(e);}}
Kennt einer eine DOM entsprechende, auch im IE funktionierende Lösung....
Will nicht auf <a href="#" Menu.foo(this) /> zurückfallen wollen...
Kommentar