11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

En faite j'ai créer une classe en javascript avec des méthodes associées.


Mx.TinyMenu = function (data) {
    //...
}

//...

Mx.TinyMenu.prototype.show = function () {
    if (this.isCreated()) {
        this.menu.style.display = '';
        this.checkOther();
        return true;
    } // else
        return false;
}

Mx.TinyMenu.prototype.isShow = function () {
    if (this.isCreated() && this.menu.style.display == '') {
        return true;
    } // else
        return false;
}


Tout marche nickel. Ou presque.
Ma classe permet d'afficher un menu contextuel pour une RIA (Application Internet Riche).
On peux créer plusieurs instances du menu avec différents liens ou action onclick.
En faite j'ai voulu stocké toutes les instances du menu dans un variable pour que lorsque l'on en affiche un, tous les autres se masquent (enfin la seule qui est affiché s'il y en a un (car le but c'est quil n'y en ai qu'un seul d'affiché!!)).

A ce niveau, cela marche bien. Jusqu'à que j'inclus prototype.js dans ma page, et que je fais appel à ma méthode isShow().

Le problème, c'est que une fois stocké dans un tableau, et que j'appelle la méthode isShow() depuis l'élément du tableau (genre montableau[ i ].isShow())

La fonction de prototype Element.isShow() prend le dessus et donc ça fait pas ce que je veux...
Comment faire à part renommer ma méthode ??? Smiley ohwell (EDIT : En fait, si je renomme ma méthode, ça marche même pas... Smiley bawling .
Y'a t'-il moyen de faire une sorte de transtypage en Javascript ??
Car le problème c'est que j'utilise abondament prototype.js...

Suis-je obligé de faire un méthode statique?? Smiley confus
Modifié par MoOx (06 Mar 2007 - 16:44)