Accéder à une variable hors de la function?

Résolu
chasseral1607 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
chasseral1607 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

J'ai un formulaire comme ceci:
<form method="post">
<input id="a" name="a" value="4"/>
<input id="b" name="b" value="2"/>
<input type="submit" value="Calculer" onclick="GetValueInput('a'),GetValueInput('b')"/>
</form>

Lors du clic, je récupère la valeur comme ceci:


<script type="text/javascript">

function GetValueInput(id){
var lol = document.getElementById('a').value;
console.log('lol:'+lol);
return lol;
}

console.log ( lol );

</script>

le log dans la fonction donne bien la valeur de 4, mais par contre le log en dehors de la fonction est undefined!

Comment récupérer une variable hors d'un fonction lorsqu'on l'emploie dans le formulaire?
A voir également:

3 réponses

Mesma262 Messages postés 42 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour, tu passes la variable en paramètre de la fonction.

Cordialement
0
jankidu
 
Normal les variables sont bien locale à une fonction en javascript.
Elles n'existent pas en dehors.
D'ailleurs vu qu'il y a l'instruction return ça suffit comme ceci:

<script>
function GetValueInput(id){ 
var lol = document.getElementById('a').value; 
console.log('lol:'+lol); 
return lol; 
} 

console.log ( GetValueInput('a') ); 
//ou bien
var valeur_de_a=getValueInput('a');
console.log(valeur_de_a);
</script>

Mais bon ce n'est pas la bonne façon de faire ni pour la gestion du click ni pour récupérer les valeurs d'un formulaire.
Il y a plus simple, plus rapide, plus efficace et plus propre.

Pour le click on peut utiliser un écouteur sur le formulaire (directement sur le bouton ou avec l'événement onSubmit) et pour récupérer les valeurs des champs simplement les lister dans un (variable de) tableau.

Et:

http://stackoverflow.com/questions/11810874/how-to-get-an-input-text-value-in-javascript
0
chasseral1607 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Merci de vos réponses.
Je me suis rendu compte que cette manière de faire était vraiment pas optimale.

J'ai cherché à détecter l'événement on click sur un élément puis agir en fonction de l'événement.

Voici ce que j'ai fait:

<form method="post">
  <input id="a" name="a" value="4" />
  <input id="b" name="b" value="2" />
  <input id="calcul" value="Calculer" type="button" />
</form>

<div id="div">Coucou, je suis le contenu du div!</div>
<h2 id="resultat"></h2>


var calcul = document.getElementById('calcul'); // récupérer l'élément

// function à exécuter lorsque l'événement est acitvé
function myFunction() {
  var a = document.getElementById('a');
  var b = document.getElementById('b');
  var div = document.getElementById('div');
  document.getElementById('resultat').innerHTML = 'A:' + a.value + '<br />B:' + b.value + '<br />div: ' + div.innerHTML;
}

// enregistement du onclick de l'événement
calcul.onclick = myFunction;


Et le résultat sur https://jsfiddle.net/Larix/6w18ffbf/
0