11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

Voilà, je suis confronté à un petit soucis, je vous ai fait un bref exemple, j'espère qu'il sera parlant :


var Exemple = Class.create({
    AddEvent : function (idDiv) {
        $(idDiv).observe ('click', function () {
            Ouvrir (idDiv); // J'ai un out of memory ici
        }.bind(idDiv));
    },

    Ouvrir : function (idDiv) {
        $(idDiv).show();
    }
});


En faite, j'aimerai pouvoir faire un obj Exemple, pouvoir lui faire un AddEvent, mais également un Ouvrir. Or le AddEvent n'arrive pas à prendre le Ouvrir de sa class ... Smiley ohwell

De plus, prototype implémente t'il la portabilitée des var (public, private, protected ...)

Merci pour tout Smiley smile

Guich
Coucou,

Faut réussir à capturé le this de la classe pour l'envoyé à la fonction. Essaye ça pour voir.

    AddEvent : function (idDiv) {
        var ref_class = this;
        $(idDiv).observe ('click', function () { 
            ref_class.Ouvrir (idDiv); // J'ai un out of memory ici 
        }.bind(idDiv)); 
    },


Javascript ne connaissant pas les variable public, private ou protected m'étonnerais que prototype le simule. Le moyen de le simuler en partie est d'utiliser __defineGetter__ et __defineSetter__ mais je croit que ie ne le comprend pas (et sûrement d'autres navigateurs). De tout manière, même comme ça le private n'existe pas (ou alors c'est le protected faut essayer xD).
Donc au final, la portée des variables n'est pas modifier.
Merci jo_link_noir, mais je viens de trouver, erreur de ma part ...
Il faut également passer l'objet this au bind, pour pouvoir l'utiliser à l'intérieur.


var Exemple = Class.create({ 
    AddEvent : function (idDiv) { 
        $(idDiv).observe ('click', function () { 
            this.Ouvrir (idDiv);
        }.bind(this, idDiv)); 
    }, 
 
    Ouvrir : function (idDiv) { 
        $(idDiv).show(); 
    } 
}); 


Une dernière question, hors contexte. L'IDE NetBean gère t'il le renvoi à la ligne automatique lorsqu'on arrive en bout ... ? Je n'arrive pas à le trouver (sur du PHP, JS, HTML ...)

Merci
Bon à savoir, je n'utilise pas prototype alors je savais pas '^^

Ne pas avoir de scrollbar horizontale sur NetBeans ? Ça m'intéresse aussi, j'ai pas trouvé Smiley decu