whiles_
24-11-2006, 20:39
salve a tutti, ho un problema, sto sviluppando un'applicazione in javascript orientato ad oggetti e non ho idea di come svolgere una funzione.
Faccio un esempio in modo pių chiaro possibile, con una classe che gestisce la comparsa e la scomparsa del menų contestuale sostituendo quello di default:
function menuEngine = function(layout) {
// Inizializzo la funzione passando l'id del div che contiene il menų
this.menuLayout = document.getElementById(layout);
document.addEventListener("contextmenu",this.showMenu);
document.addEventListener("click",this.hideMenu);
this.showMenu = function() {
// Posiziono il menų e lo visualizzo...
this.menuLayout.style.visibility = "visible";
// Altro codice...
}
this.hideMenu = function() {
// Nascondo il menų...
this.menuLayout.style.visibility = "hidden";
// Altro codice...
}
}
window.onload = function() {
var menu = new menuEngine("popUpMenuDiv");
}
ora, quello che non vorrei fare č usare una variabile globale. Il problema sta nell'addEventListener, quando l'evento si va a richiamare, non riconosce la funzione showMenu o hideMenu e mi da logicamente errore. Ho provato con this, senza this, mettendo il nome della classe, ma č tutto inutile. Ho anche provato ad utilizzare la variabile globale dichiarandola direttamente nel tag script, e poi assegnandola all'onload, ma (!!) se scrivo globVarMenuEngine.showMenu nell'addEventListener mi da errore di nuovo :mbe: come ho giā detto vorrei evitare l'uso delle variabili globali. C'č un modo per farlo? Ah si, lo stesso problema si ripresenta con setTimeout, infatti quando evoca la funzione non la riconosce pių. Grazie mille.
Faccio un esempio in modo pių chiaro possibile, con una classe che gestisce la comparsa e la scomparsa del menų contestuale sostituendo quello di default:
function menuEngine = function(layout) {
// Inizializzo la funzione passando l'id del div che contiene il menų
this.menuLayout = document.getElementById(layout);
document.addEventListener("contextmenu",this.showMenu);
document.addEventListener("click",this.hideMenu);
this.showMenu = function() {
// Posiziono il menų e lo visualizzo...
this.menuLayout.style.visibility = "visible";
// Altro codice...
}
this.hideMenu = function() {
// Nascondo il menų...
this.menuLayout.style.visibility = "hidden";
// Altro codice...
}
}
window.onload = function() {
var menu = new menuEngine("popUpMenuDiv");
}
ora, quello che non vorrei fare č usare una variabile globale. Il problema sta nell'addEventListener, quando l'evento si va a richiamare, non riconosce la funzione showMenu o hideMenu e mi da logicamente errore. Ho provato con this, senza this, mettendo il nome della classe, ma č tutto inutile. Ho anche provato ad utilizzare la variabile globale dichiarandola direttamente nel tag script, e poi assegnandola all'onload, ma (!!) se scrivo globVarMenuEngine.showMenu nell'addEventListener mi da errore di nuovo :mbe: come ho giā detto vorrei evitare l'uso delle variabili globali. C'č un modo per farlo? Ah si, lo stesso problema si ripresenta con setTimeout, infatti quando evoca la funzione non la riconosce pių. Grazie mille.