IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

intrusion hérétique dans un objet


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kaking
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2008
    Messages : 753
    Par défaut intrusion hérétique dans un objet
    Bonjour a tous

    bon alors voila, je pense que la manip que j'essaye de faire est completement erroné et va a l'encontre des droits du javascript, mais baste : ca ne marche pas !

    je m'explique :

    j'ai ce code rentré en dur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var positions = {		
    'bottom-left'  : {position: 'bottom', align: 'left'   },
    'bottom-center': {position: 'bottom', align: 'center' },
    'bottom-right' : {position: 'bottom', align: 'right'  }
    				};
    mais je voudrais que ces parametres passées a 'positions' soient dynamique.

    J'ai donc fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    var parametre='';
     
    			for(i=1;i<nbtmag;i++){
    				parametre+="'top-left"+i+"'     : {position: 'top',    align: 'left'   },";
    			}
    			parametre = parametre.slice(0, -1);//pour retirer la virgule en trop
    var positions = {parametre 	}

    mais la, voila, ca me plante dans les pattes!
    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var positions = {eval('parametre')	};
    mais meme tarif !

    serait-ce du au fait que je fais une manip hyper pourri ?

    d'avance merci !

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 209
    Par défaut
    Bonjour,
    pourquoi ne pas travailler directement sur l'objet positions?

  3. #3
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    ne jamais utiliser eval

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    hormis les deux reponses précédentes for justes

    1 - tu peux construire ton objet dans la boucle for au liue d'essayer de passer par un string
    2 - toujours garder le célèbre adage en mémoire "eval is evil"

    je n'interviens ici que niveau syntaxe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var positions = eval( '{'+parametre+'}');
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var positions = JSON.parse( '{'+parametre+'}');
    mais bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var positions = {		
      'bottom-left'  : {position: 'bottom', align: 'left'   },
      'bottom-center': {position: 'bottom', align: 'center' },
      'bottom-right' : {position: 'bottom', align: 'right'  }
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for(i=1;i<nbtmag;i++){
      positions ['top-left'+i] = {'position': 'top',    'align': 'left'   };
    }
    les objets sont fait pour être utilisées
    je ne vois pas où est le pb

    A+JYT

  6. #6
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut par curiosité ^^
    Citation Envoyé par sekaijin Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var positions = JSON.parse( '{'+parametre+'}');
    *débarque*

    Il y a un objet global JSON disponible nativement ? sur quels navigateurs ?

    Ou bien c'était en supposant le support d'une lib ?

    ---
    edit : bon ben y'a déjà Firefox au minimum à part ça mes connaissances sont très à jour

    >>> disons que j'ai rien dit, allez j'ai de la lecture, je file ^^'

  7. #7
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 100
    Par défaut
    Citation Envoyé par sekaijin Voir le message
    ne jamais utiliser eval
    En même temps, on a affaire à l'Empereur en personne là, normal qu’il emploie les techniques les plus sordides du côté obscur

    Kaking, je rejoins la dernière intervention de Sekaijin pour le code.
    De manière générale, quand tu as un objet o avec des propriétés x1, x2, etc., tu peux accéder à ses propriétés en faisant o.x1 ou o['x1'], les deux façons ont exactement le même effet.

    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  8. #8
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    1 - tu peux construire ton objet dans la boucle for au liue d'essayer de passer par un string
    2 - toujours garder le célèbre adage en mémoire "eval is evil"
    Bref
    on est tous d'accord

    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  9. #9
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    la RFC qui définie la norme JSON propose d'utiliser une regexp si le support natif de l'objet JSON n'est pas proposé par le navigateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var my_JSON_object = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
           text.replace(/"(\\.|[^"\\])*"/g, ''))) &&
       eval('(' + text + ')');
    les navigateurs nternet Explorer 8, Firefox 3.5+, Safari 4+, Chrome, and Opera 10+ supporte l'objet JSON
    vous trouverez sur parser online
    un comparatif de l'évaluation d'un JSON entre eval et JSON.parse

    Mais mieux que l'eval même avec regexp un tout petit js permets de faire comme si voir json.org
    le projet de json.org d'implémentation de JSON dans un navigateur ne le supportant pas
    écrit en js.

    il suffit de charger le js dans sa page et JSON existe

    J'ajoute un petit renvois vers cette discussion qui traite du typage de donnée en JSON json-types-classes
    un autre vers le traitement de dates en json

    A+JYT

Discussions similaires

  1. Protéger Couper/Copier/Coller dans un Objet en développement
    Par tibi666 dans le forum Composants VCL
    Réponses: 14
    Dernier message: 06/12/2004, 14h52
  2. Réponses: 3
    Dernier message: 19/11/2004, 21h48
  3. Réponses: 3
    Dernier message: 26/10/2004, 07h31
  4. Réponses: 3
    Dernier message: 05/05/2004, 00h39
  5. TWebBrowser créé dans un objet.
    Par Speed41 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/11/2003, 10h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo