9948 sujets

JavaScript, DOM et API Web HTML5

bonjour

j'utilise ce script avec 4 fonctions pour changer des class

function Change1(){"use strict";document.querySelector(".class1").classList.toggle("classn");}
function Change2(){"use strict";document.querySelector(".class2").classList.toggle("classn");}
function Change3(){"use strict";document.querySelector(".class3").classList.toggle("classn3");}
function Change4(){"use strict";document.querySelector(".class3").style.display="block";}
function Change5(){"use strict";document.querySelector(".class3").style.display="none";}


je ne comprend pas comment simplifier
si je fais
var x = document.querySelector(".class3");
function Change3(){"use strict";x.classList.toggle("classn3");}

ca ne marche pas

ca ne fonctionne que si je mets la variable à l'interieur de la fonction
comme ceci
function Change3(){"use strict";var x = document.querySelector(".class3");x.classList.toggle("classn3");}


comme j'ai plusieurs fois document.querySelector(".class3") je voudrait le passer en variable recupere par les 3 fonctions donc a l'exerieur... comment faire
merci
Modifié par nantais (10 Sep 2017 - 13:06)
À mon sens, c'est le "use strict" qui pose problème
Je ne comprends pas très bien l'utilité de cette nouveauté ni la façon dont elle est implémentée, mais elle est justement prévue pour éviter qu'on utilise dans une fonction des variables qui n'y sont pas déclarées je suppose que les inventeurs de cette déclaration ont prévu un autre moyen d'utiliser des variables globales.
Faites donc un essai en la supprimant et regardez ce qui ce passe.
Modifié par PapyJP (11 Sep 2017 - 09:00)
Bonjour nantais,

Je pense que tu devrais lire ou relire ces chapitres :
- Function
- use strict

Au passage, les arguments sont pas mal comme concept pour coder proprement.... Aussi, les noms de fonction comme change1 ou change2 ou ...., c'est dégueu
Modifié par niuxe (10 Sep 2017 - 23:25)
bonjour,

merci pour vos reponses
si je vire use strict c'est pareil ca ne fonctionne pas avec la variable à l'exterieur

je vais lire les liens que tu me donnes
bonjour jencal
oui bien sur que ca fonctionne qd on met la variable a l'interieur de la fonction
mais pas qd on la met a l'exterieur, d'ou l'objet de ma question
pourquoi?
Modifié par nantais (12 Sep 2017 - 08:41)
nantais a écrit :
bonjour jencal
oui bien sur que ca fonctionne qd on met la variable a l'interieur de la fonction
mais pas qd on la met a l'exterieur, d'ou l'objet de ma question
pourquoi?


Hello,

Je pense que ce lien devrait répondre à ta question :

Portée des variables