Soluzione al volo (devi modificare solo questa riga nel tuo esempio!):
codice:
<div class=menuitem onmouseover="onMouseEnter.call(this);" onmouseout="onMouseLeave.call(this);">
Spiegazione
succede perché gli eventi dichiarati inline (cioè come fai tu) sono considerati a loro volta delle funzioni.
se tu fai:
codice:
<tuoElemento onmouseover="funzione();">
è come se facessi così:
codice:
function mouseover () {
// qui dentro viene passato l'oggetto this, che però non verrà passato anche a funzione() !!!
funzione ();
}
tuoElemento.onmouseover = mouseover;
Di conseguenza, o usi alternative all'oggetto this, oppure assegni l'evento via codice. Così:
codice:
tuoElemento.onmouseover = funzione; // in questo caso a "funzione()" verrà passato l'elemento this!!
Spero ti sia chiaro.