JSON / instance de classe et ajout de méthode

Résolu
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 - 18 déc. 2008 à 00:21
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 - 18 déc. 2008 à 11:16
Bonjour :)

j'ai un p'tit soucis en js et j'avoue que je sèche complet! D'une part parce que je ne suis pas sur de la possibilité de le faire et d'autres part de la syntaxe a adopter!
Voici la problèmatique!
J'ai une instance de classe (générée en PHP sous forme de JSON) Ce qui donne ceci !

var
Translator = {"fr":{"TITLE":"Mon titre","CONTENT":"Mon
contenu","THING":"Ma chose","SIGN":"Teclis01"},"en":{"TITLE":"My
title","CONTENT":"My content","SIGN":"Teclis01"}}

cette variable contenant mon instance j'aimerais lui ajouter des méthodes!
j'ai donc essayé ceci :

Translator.prototype.getTranslation = function(langage,symbol) {
    return this[langage][symbol];
};

Translator.prototype.translation = function(divId,langage,symbol){
    document.getElementById(divId).value=this.getTranslation(langage,symbol);
};

Vous vous en doutez :
1/ça ne fonctionne pas (ça me dit que la fonction n'est pas définie) quand j'essaye de faire : window.Translator.getTranslation('fr','SIGN');
2/ça sert a traduire >_<

Comment puis je faire ?
Merci :D

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro

4 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
18 déc. 2008 à 03:12
salut

pourquoi ne pas faire simplement :

Translator.getTranslation = function(langage,symbol) {
    return this[langage][symbol];
};
3
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
18 déc. 2008 à 09:35
Euh a vrai dire, je ne sais pas... J'ai vu cette syntaxe et je me suis dit qu'il fallait employer celle ci.
Je test pdt la pause merci :)

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
18 déc. 2008 à 10:26
Nickel ! ça fonctionne mais je me renseignerais quand même sur l'utilisation du mot clef prototype

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
18 déc. 2008 à 11:16
Pour ceux que ça interesse voici le code final
C'est du brut de brut pour tester.

<script>
var Translator = {"fr":{"TITLE":"Mon titre","CONTENT":"Mon contenu","THING":"Ma chose","SIGN":"Teclis01"},"en":{"TITLE":"My title","CONTENT":"My content","SIGN":"Teclis01"}}

Translator.getTranslation = function(langage,symbol) {
    var translation="TRANSLATION FOR "+symbol+" DOESN'T EXISTS FOR "+langage+"'s";
    if(this[langage][symbol]){
        return this[langage][symbol];
    }
    return translation;
};

Translator.translation = function(divId,langage,symbol){
    document.getElementById(divId).innerHTML=this.getTranslation(langage,symbol);
};
</script>

THING

<select onChange="window.Translator.translation('THING',this.value,'THING');">
    <option value="">Choix</option>
    <option value="fr">fr</option>
    <option value="en">en</option>
</select>

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
0
Rejoignez-nous