Comment appeler une variable qui appartient à une autre fonction
Résolu/Fermé
A voir également:
- Comment appeler une variable qui appartient à une autre fonction
- A qui appartient ce numéro - Guide
- Fonction si et - Guide
- Appeler en privé - Guide
- A qui appartient ce 06 gratuit - Forum Mobile
2 réponses
jordane45
Messages postés
38364
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
30 décembre 2024
4 720
Modifié le 6 mai 2021 à 16:54
Modifié le 6 mai 2021 à 16:54
Bonjour,
Je t'invite fortement à aller regarder (te former ) la portée des variables en javascript.
Donc, ton code, devrait ressembler à ça
Je t'invite fortement à aller regarder (te former ) la portée des variables en javascript.
Donc, ton code, devrait ressembler à ça
// déclaration en dehors de toute fonction = portée GLOBALE var name = null; $(".btn-new").on('click', function (){ /* INUTILE .. pas besoin de faire de boucle var i=0; $("#change-class").each(function (){ i++; }); */ var i = $("#change-class").length; // remplace la boucle : https://api.jquery.com/length/ name = 'eff' + i; $("#uploader2").append('<div class="row uploadDoc"><div class="col-sm-4 order-1 order-sm-0"><div class="docErr">Veillez upload au format pdf, jpg, jpeg, png</div><!--error--><div class="fileUpload btn btn-orange"> <img src="https://image.flaticon.com/icons/svg/136/136549.svg" class="icon2"><span class="upl" id="upload">Parcourir</span><input type="file" name="file[]" class="upload up" accept="image/png, image/jpeg, .pdf" id="up" onchange="readURL(this);" required/><div class="invalid-feedback">Document obligatoire</div></div></div><div class="col-sm-1 order-2 order-sm-1"><div class="pos_croix"><a href="#" id="change-class" class="' + name +'"><i class="fas fa-times fa-xs" style="color:red;"></i></a></div></div><div class="col-sm-6 order-0 order-sm-2"><input type="text" class="form-control" name="test[]" placeholder="Veuillez preciser le document que vous ajoutez" required pattern="^[A-Za-z -]+$"><div class="invalid-feedback">Veuillez saisir le document que vous souhaitez ajouter.</div></div></div>'); $(document).on("click", "a."+name, function (){ $(this).closest(".uploadDoc").remove(); }); });
Bonjour Jordane45,
J'ai bien lu et compris le lien que vous m'aviez consulté de regarder et vraiment merci beaucoup ! Je pensais pas que le Javascript était un langage autant différent des autres langages. Quand j'essayais de mettre ma variable ailleurs dans mon éditeur de texte je l'avais sous forme rayée du coup je pensais que ce n'était pas fonctionnel...
En tout cas merci !
J'ai bien lu et compris le lien que vous m'aviez consulté de regarder et vraiment merci beaucoup ! Je pensais pas que le Javascript était un langage autant différent des autres langages. Quand j'essayais de mettre ma variable ailleurs dans mon éditeur de texte je l'avais sous forme rayée du coup je pensais que ce n'était pas fonctionnel...
En tout cas merci !
JavaScript est très fonctionnel comme langage(comme beaucoup de langage scripts non typé il me semble) et JQuery encore plus.
D'a&illeurs en JS il n'y a pas de vrai différence entre les fonctions et les objets, c'est un paradigme objet plus qu'un vrai langage objet et qui utilisait beaucoup le prototypage pour ça. Maintenant il y a de meilleures façons de faire avec l'évolution du langage.
Le mieux c'est souvent le passage de variable (caractéristique de la prog fonctionnelle) en chaînage:
Les variables crées avec "var" sont disponibles dans l'objet window (contrairement aux variables assignées avec "let")mais il faut tenir compte de la temporal dead zone(tdz) qui fait qu'une fois une fonction "exécutée" son contenu n'existe plus.
C'est l'équivalent du ramasse miettes dans les langages compilés comme JAVA ou de l'attribution de mémoire avec C++ et autres.
Et comme les threads n'existent pas vraiment(il n'y a que l'approche événementielle pour ça) pas possible d'avoir accès aux variables internes même définies en globales(et il n'existe pas de variables super globales donc il faut passer par une externilisation si on veut vraiment les utiliser sur la durée et plusieurs pages comme par exemple avec la méthode AJAX o en mettant la valeur dans l'URL(en GET ou en écriture manuelle) ou directement dans le HTML souvent en "planqué" ou avec un datatype HTML).
Sinon oui var en global dans l'objet window reste accessible du moment qu'on reste dans le contexte d’exécution(une page).
En même temps les défauts ou problèmes de JS en font ses qualités, pas pour rien que Microsoft l'à élu meilleur langages actuel il y a quelques années(à l'époque de la norme JS6 et >). C'est aussi pour ça que beaucoup de développeurs détestent ce langage et qu'ils existent des tas de bibliothéques qui vont compenser les problèmes(comme CoffeeScript et autres qui rajoutent une sécurité pour le typage ou le MVC mais qui bien sûr sont à utiliser dans un contexte particulier)
ça permet les closures et autres astuces totalement fonctionnelles(comme la mutation des variables lors de leur traitement) et on peut se passer du singleton (dans certains cas) pour assurer la sécurité d'un bloc et son unicité parce que le code script contrairement à un langage compilé va faire exister le bloc de code(exemple une fonction anonyme) uniquement au moment de son utilisation.
D'a&illeurs en JS il n'y a pas de vrai différence entre les fonctions et les objets, c'est un paradigme objet plus qu'un vrai langage objet et qui utilisait beaucoup le prototypage pour ça. Maintenant il y a de meilleures façons de faire avec l'évolution du langage.
Le mieux c'est souvent le passage de variable (caractéristique de la prog fonctionnelle) en chaînage:
function maFunction1(value1){ //-- traitement return resultatTraitement; } function maFonction2(value2){ //-- traitement return resultatTraitement; } var val1='une valeur'; var traitement = maFunction2(maFunction(val1)); //-- JQuery est complétement basé là dessus avec la notion d'objet en plus
Les variables crées avec "var" sont disponibles dans l'objet window (contrairement aux variables assignées avec "let")mais il faut tenir compte de la temporal dead zone(tdz) qui fait qu'une fois une fonction "exécutée" son contenu n'existe plus.
C'est l'équivalent du ramasse miettes dans les langages compilés comme JAVA ou de l'attribution de mémoire avec C++ et autres.
Et comme les threads n'existent pas vraiment(il n'y a que l'approche événementielle pour ça) pas possible d'avoir accès aux variables internes même définies en globales(et il n'existe pas de variables super globales donc il faut passer par une externilisation si on veut vraiment les utiliser sur la durée et plusieurs pages comme par exemple avec la méthode AJAX o en mettant la valeur dans l'URL(en GET ou en écriture manuelle) ou directement dans le HTML souvent en "planqué" ou avec un datatype HTML).
Sinon oui var en global dans l'objet window reste accessible du moment qu'on reste dans le contexte d’exécution(une page).
En même temps les défauts ou problèmes de JS en font ses qualités, pas pour rien que Microsoft l'à élu meilleur langages actuel il y a quelques années(à l'époque de la norme JS6 et >). C'est aussi pour ça que beaucoup de développeurs détestent ce langage et qu'ils existent des tas de bibliothéques qui vont compenser les problèmes(comme CoffeeScript et autres qui rajoutent une sécurité pour le typage ou le MVC mais qui bien sûr sont à utiliser dans un contexte particulier)
ça permet les closures et autres astuces totalement fonctionnelles(comme la mutation des variables lors de leur traitement) et on peut se passer du singleton (dans certains cas) pour assurer la sécurité d'un bloc et son unicité parce que le code script contrairement à un langage compilé va faire exister le bloc de code(exemple une fonction anonyme) uniquement au moment de son utilisation.