Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/05/2011, 11h24   #1
Débutant
 
Avatar de kaking
 
Inscription : mars 2008
Messages : 691
Détails du profil
Informations personnelles :
Âge : 23
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mars 2008
Messages : 691
Points : 188
Points : 188
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 :
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 :
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 :
var positions = {eval('parametre')	};
mais meme tarif !

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

d'avance merci !
__________________
« Pour garantir la sécurité dans la continuité et la stabilité, la République sera bientôt réorganisée et deviendra la Première Puissance Galactique Impériale ! Pour une société fondée sur l’ordre et la sécurité ! »
kaking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 13h40   #2
Modérateur
 
Avatar de NoSmoking
 
Homme
Inscription : janvier 2011
Messages : 2 933
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Isère (Rhône Alpes)

Informations forums :
Inscription : janvier 2011
Messages : 2 933
Points : 4 756
Points : 4 756
Bonjour,
pourquoi ne pas travailler directement sur l'objet positions?
NoSmoking est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 13h58   #3
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 420
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 420
Points : 2 807
Points : 2 807
ne jamais utiliser eval
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 17h03   #4
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
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 :
var positions = eval( '{'+parametre+'}');
__________________
Ma page 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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 18h05   #5
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 420
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 420
Points : 2 807
Points : 2 807
Code :
var positions = JSON.parse( '{'+parametre+'}');
mais bon
Code :
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 :
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 18h37   #6
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
Par défaut par curiosité ^^

Citation:
Envoyé par sekaijin Voir le message
Code :
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 ^^'
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/05/2011, 23h13   #7
Membre Expert
 
Avatar de Watilin
 
Homme Matilin Torre
Étudiant
Inscription : juin 2010
Messages : 679
Détails du profil
Informations personnelles :
Nom : Homme Matilin Torre
Âge : 23
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 679
Points : 1 202
Points : 1 202
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.

__________________
Disposition de clavier ergonomique française : Bépo
Watilin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 09h11   #8
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 007
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

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

Informations forums :
Inscription : mars 2002
Messages : 30 007
Points : 45 091
Points : 45 091
Citation:
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
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


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 10h12   #9
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 420
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 420
Points : 2 807
Points : 2 807
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 :
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
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/05/2011, 10h52   #10
Expert Confirmé Sénior
 
Avatar de RomainVALERI
 
Homme Romain VALERI
POOête
Inscription : avril 2008
Messages : 2 572
Détails du profil
Informations personnelles :
Nom : Homme Romain VALERI
Âge : 35
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : POOête

Informations forums :
Inscription : avril 2008
Messages : 2 572
Points : 4 074
Points : 4 074
merci sekaijin pour toutes ces bonnes infos

( bon ben j'ai encore plus de lecture quoi )
__________________

...pour les linguistes et les curieux >>> générateur de phrases aléatoires

__________________
RomainVALERI est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h06.


 
 
 
 
Partenaires

Hébergement Web