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 :

Une fonction récursive


Sujet :

JavaScript

  1. #1
    Membre éclairé Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Par défaut Une fonction récursive
    Bonjour,
    J'ai fait une fonction recursive qui doit me retourner l'id d'un element parent.
    Par contre j'ai un problème elle me retourne un objet undefined alors que quand je test en faisant un alert dans ma fonction, l'ID est bien trouvé.

    Qu est ce qui ne va pas dans ma fonction?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function findElementId(element,word){
    	if (element.id.toString().strip().startsWith(word))
    	{ 
    		return element.id.toString().strip().split('_').last();
    	}
    	else{ 
    		findElementId(element.up(),word);
    	}
    }
    Merci,
    Grégory

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonjour,

    dans ta fonction où places-tu ton alert ?
    Ensuite, que sont les méthodes strip() et up()

  3. #3
    Membre éclairé Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Par défaut
    Citation Envoyé par Auteur Voir le message
    bonjour,

    dans ta fonction où places-tu ton alert ?
    Ensuite, que sont les méthodes strip() et up()
    Je le place à la place du return pour voir si la valeur est bonne, est c'est le cas.

    J'ai aussi fait ca pour voir ma valeur de retour et c'est la que c'est undefined.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alert(findElementId(element,"mot");

  4. #4
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Sur quel type de noeud pointes-tu lorsque tu quittes ta fonction ? Tu peux, sans le savoir, pointer sur un noeud text.

    Si j'ai bien compris ta fonction tu pars d'un élément "element" et tu remontes jusqu'au parent ayant un id commençant par "word".

    Peut-on voir le code des fonctions up() et strip() ?

  5. #5
    Membre éclairé Avatar de Gregory.M
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    684
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 684
    Par défaut
    Citation Envoyé par Auteur Voir le message
    Sur quel type de noeud pointes-tu lorsque tu quittes ta fonction ? Tu peux, sans le savoir, pointer sur un noeud text.

    Si j'ai bien compris ta fonction tu pars d'un élément "element" et tu remontes jusqu'au parent ayant un id commençant par "word".

    Peut-on voir le code des fonctions up() et strip() ?
    Up et Strip sont des fonctions de Prototype. La fonction fonctionne correctement, c'est juste que ca me retourne un élément Undefined alors que ca ne devrait pas...

  6. #6
    Membre Expert
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Par défaut
    Salut,

    Peut-être avec "return"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    else{ 
    		return findElementId(element.up(),word);
    	}

  7. #7
    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
    Tout d'abord :
    Tu cherches à transformer une chaine en chaine ?

    Sinon, return stoppe l'exécution d'une fonction et renvoie le résultat à la fonction appelante, donc dans le cas d'une récursivité, un des appels de ta fonction renvoie bien un résultat (celui que tu vois dans le alert), mais pas le premier appel de la fonction

    PS :
    La fonction fonctionne correctement, c'est juste que ca me retourne un élément Undefined alors que ca ne devrait pas...
    Hum... donc elle fonctionne pas correctement
    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

  8. #8
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    ta fonction ne retourne pas toujours quelques chose
    il te faut un return , et pas juste un simple appel

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/06/2008, 12h08
  2. algorithme comportant une fonction récursive
    Par TraxX dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 21/02/2008, 16h09
  3. Réponses: 4
    Dernier message: 03/01/2008, 10h53
  4. [fonction d'Ackermann] Écrire une fonction récursive
    Par java+ dans le forum Mathématiques
    Réponses: 5
    Dernier message: 19/06/2007, 01h14
  5. Réponses: 6
    Dernier message: 24/05/2007, 17h18

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