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

jQuery Discussion :

Syntax error avec jQuery


Sujet :

jQuery

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2009
    Messages : 115
    Par défaut Syntax error avec jQuery
    Bonjour,

    Je commence par vous donner mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    manager = {	
    	getFunction : function(name, arguements, class) {
    		if(typeof(class) != 'undefined') {
    			if(typeof(arguements) == 'object') {
    				eval(class + '.' + name + '(\'' + arguements + '\')');
    				return;
    			}
     
    			eval(class + '.' + name+ '()');
    			return;
    		}
     
    		if(typeof(class) != 'undefined') {
    			eval(name + '(' + arguements + ')');
    			return;
    		}
     
    		eval(name + '()');
    		return;
    	},
    }
    La classe précédente avec le méthode "getFunction" permet de créer des fonctions "dynamiquement". D'ailleurs elle reste à améliorer car j'utilise abusivement eval(). Si vous avez une idée ? .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    actions = {
    	closeButton : function(el) {
    		alert($(el).html());
    	},
    }
    La classe précédente, quant à elle, regroupe plusieurs fonctions donc dans cette exemple "closeButton".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    		$('*').live('click', function() {
    			if($(this).attr('class') != '') {
    				var el = $(this);
    				manager.getFunction('closeButton', el, 'actions');
    			}
     
    			return false;
    		});
    Avec le code précédent, que j'ai simplifié, je créer une nouvelle fonction. J'arrive à obtenir la fonction avec en argument la variable "el" qui de coule de la ligne précédente.

    Dans la fonction appelée (closeButton), je fait un "alert($(el).html());" mais j'ai l'erreur suivante :

    "uncaught exception: Syntax error, unrecognized expression: [object Object]"
    Pouvez-vous m'aider un peu car je ne vois pas pourquoi ça plante. De plus je ne suis pas encore assez bon en JS et accessoirement jQuery.

    Merci,
    Bien cordialement.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Salut,

    Ne pas utiliser les mots réservés (genre class) ou des mots appartenant à la syntaxe de JavaScript (genre name) pour nommer tes variables, paramètres etc. pourra probablement t'aider !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2009
    Messages : 115
    Par défaut
    Merci des conseils que j'ai d'ailleurs appliqué tout de suite, voici donc la nouvelle fonction getFunction (qui est un peu différente depuis le deuxième "if(typeof(arg) != 'object') " ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    manager = {	
    	getFunction : function(actName, arg, clName) {
    		if(typeof(clName) != 'undefined') {
    			if(typeof(arg) == 'object') {
    				eval(clName + '.' + actName + '(\'' + arg + '\')');
    				return;
    			}
     
    			eval(clName + '.' + actName + '()');
    			return;
    		}
     
    		if(typeof(arg) != 'object') {
    			eval(actName + '(\'' + arg + '\')');
    			return;
    		}
     
    		eval(actName + '()');
    		return;
    	},
    }
    Mais cela n'a pas encore résolu mon problème. Peu être est-ce à cause de eval() ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2009
    Messages : 115
    Par défaut
    Voila la suite de mes teste et je pense que ca vient de la fonction eval(). Voici une variante de la fonction getFunction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    	getFunction : function(actName, arg, clName) {
    		switch(clName) {
    			case 'actions':
    				switch(actName) {
    					case 'closeButton':	
    						actions.closeButton(arg);
    						break;
    					case 'wdw':	
    						actions.wdw();
    						break;
    				}
    				break;
    		}
    	}
    Dans ce cas, il n'y aucune erreur. Par contre je souhaite éviter de faire appel à la fonction switch en cascade. De plus je risque d'avoir une quantité importante de fonctions dans dans des classes différentes.

    Pouvez-vous m'aider sur ce point ?

    Merci

  5. #5
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut
    Bonjour.

    Si : Alors : Détail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($(this).hasClass('class')) {

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2009
    Messages : 115
    Par défaut
    Bonjour danielhagnoul,

    Je n'ai pas très bien compris ce que tu m'a donné comme solution, mais je pense avoir trouvé comme optimiser la fonction geFunction() sans eval
    voila un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    window["test"]["bibi"]()
     
    test = {
    	bibi : function() {
    		alert('')	
    	}
    }
    Il n'y a plus qu'a mettre des variable a la place de test et bibi. Encore merci pour vos aides.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Eclipse pense à une syntax error avec un typedef opaque
    Par Gui13 dans le forum Eclipse C & C++
    Réponses: 6
    Dernier message: 27/10/2009, 14h32
  2. Syntax error avec un script KSH
    Par Neuromancien2 dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 19/05/2008, 16h44
  3. Réponses: 6
    Dernier message: 19/05/2008, 12h28
  4. VBS syntax error avec la fonction PivotCache d'Excel
    Par speedking78 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/02/2008, 14h44
  5. "vector" provoque "syntax error", malgré
    Par seenkay dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 24/08/2003, 03h21

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