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 :

[class JS] Return d'une valeur dans une fonction et la réutiliser dans une autre


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 184
    Par défaut [class JS] Return d'une valeur dans une fonction et la réutiliser dans une autre
    Bonjour,

    J'ai une application front-end dans lequel j'ai une couche avec les entreprises (donnée ponctuelle) qui sont géolocalisées sur une carte (map).

    Quand je clique sur un point, j'ai une fiche qui s'ouvre à l'aide d'une modale et dans lequel j'ai un formulaire de mise à jour.

    J'ai créé une classe JS "Entreprise" dans laquelle j'ai un constructeur ayant comme paramètres les données natives de l'entreprise, tq le nom, l'adresse, le numéro de tel, etc.

    J'ai plusieurs fonctions à l'intérieur de cette classe. Dans l'une d'elles, je récupère une valeur 'intérêt' de 1 à 5 (fonction rate())

    J'ai une autre fonction qui permet de mettre à jour le formulaire (function update()) A l'intérieur de cette fonction, on retrouve une requête ajax, dans laquelle on retrouve la liste des paramètres et notamment cette valeur citée précédemment.

    Le problème c'est que je n'arrive pas à récupérer la valeur retournée par la fonction rate() dans la fonction update(). La requête AJAX plante systématiquement.

    A l'intérieur d'une classe, comment récupérer une valeur d'une fonction pour l'utiliser dans une autre ?

    Merci pour vos retours.

    Bonne journée,

    Sylvain

  2. #2
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    Je vois ... Je vois Dans ma boule de crisal ... un bout de code ?
    Si si là en bas à droite..


    Ha ben non c'est le prix que j'ai oublié d'enlever ...
    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 !

  3. #3
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 491
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 491
    Par défaut
    peux-tu nous faire une POC de la structure de ton code ? j'ai du mal a suivre

    sinon, pour retourner une valeure, tu fais juste une methode publique (ou alors je n'ai pas compris ton probleme)
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class classA {
        #a = 'private A';
        constructor() {
     
        }
        getA() {
            return this.#a;
        }
    }
     
    const maClassA = new classA();
    maClassA.getA(); // retourne 'private A'
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  4. #4
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 184
    Par défaut
    J'ai ça :


    Ma classe telle qu'elle est déclarée :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    class Carte {
        constructor({reference = "", intitule = "", annee = "", interest = ""}){
            this.reference = reference,
            this.intitule = intitule,
            this.annee = annee,
            this.interest = interest
        }
     
    add(){  /// qui permet d'afficher les informations dans une div
     
    document.getElementById("info_carte").innerHTML = 
    `<form action="" id="cpa_edit">
    <div><input type="text" id="fd_reference" value="${this.reference}"></div>
    <div><input type="text" id="fd_intitule" value="${this.intitule}"></div>
    <div class="my-rating">${this.interest}"</div>
    <button type="submit">Soumettre</button>
    </form>`
     
    }
     
    rate(){ /// j'utilise ici la notation par étoiles jQuery avec starRating
    $(".my-rating").starRating({
                useFullStars: true,
                emptyColor:'transparent',
                strokeColor: 'black',
                starSize: 22,
                readOnly: false,
                hoverColor:'grey',
                activeColor:'black',
                ratedColor:'gold',
                ratedColors:'yellow',
                useGradient:false,
                initialRating: this.interest,
                disableAfterRate:false,
                onClick: function(currentIndex, currentRating, $el){
                    return currentRating;
                }
            });
    }
     
    update(){
            $.ajax({
                url:"monfichier.php?",
                type:"POST",
                data:{
                    "reference":$("fd_reference").val(),
                    "intitule":$("fd_intitule").val(),
                    "interest":this.interest ?? currentRating //// et c'est là que systématiquement ça renvoie "currentRating" is not defined
                },
                success:function(data){
                    M.toast({html: 'Données de la carte mises à jour !', displayLength: 5000, classes: 'toast_success'});
                },
                error:function(err){
                    M.toast({html: 'Erreur :' + err, displayLength: 5000, classes: 'toast_error'});
                }
            })
        }
    }
    et la nouvelle instance de classe donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
                var carte = new Carte({
                    reference : donnee_reference,
                    intitule : donnee_intitule,
                    interest : donnee_interest
                })
     
    carte.add();
     
                $("#cpa_edit").on('submit', function(e){  /// Mise à jour fiche
                    e.preventDefault();
                    carte.update();
                })
    N'étant pas développeur professionnel, mais étant géomaticien faisant du développement, sûrement que je ne fais pas ça dans les règles de l'art et que certains trucs doivent faire que les pros se tirent les cheveux, que pensez-vous de mon code ?

    Merci pour vos retours

    Sylvain

  5. #5
    Membre Expert
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 491
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 491
    Par défaut
    est-ce que les donnes que tu recois sont correctes ?

    donnee_reference, donnee_intitule, donnee_interest ?
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  6. #6
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 184
    Par défaut
    Oui les données sont correctes, ce sont des données issues d'un click d'une couche de tuiles vectorielles.
    (et le return de la fonction rate() renvoie correctement la donnée)

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 198
    Par défaut
    Bonjour,
    (et le return de la fonction rate() renvoie correctement la donnée)
    certes mais la valeur de la fonction est retournée où ?

    currentRating n'est définie que dans le retour de ta fonction sur le onclick, nulle part ailleurs.

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 15/05/2007, 14h24
  2. Réponses: 9
    Dernier message: 09/03/2007, 15h01
  3. [VBA] Recherche d'une valeur dans un autre fichiers puis
    Par Nicos77 dans le forum Général VBA
    Réponses: 11
    Dernier message: 24/03/2006, 11h24
  4. Réponses: 14
    Dernier message: 04/12/2005, 08h08

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