Problême Javascript innerHTML

Résolu/Fermé
themegabit Messages postés 31 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 20 août 2009 - 17 août 2009 à 04:51
themegabit Messages postés 31 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 20 août 2009 - 19 août 2009 à 16:52
Bonjour,

J'utilise pour la première fois le javascript à l'intérieur de mon site internet.
Voilà la situation, je veut faire un compteur de clics sur un bouton en temps réel.
À chaque fois que l'utilisateur clique sur le bouton, le chiffre indiqué augmente de 1.
(1,2,3,4,5,6,7...)
Pour le faire je pense utiliser innerHTML mais le compteur arrête après 1.
Pouvez-vous m'aider? Quel est la bonne façon de procéder?

Voila mon code:

<html>
<head>
</head>
<body>

<script type="text/javascript">
var x=0
function compteur(x)
{
var x = x+1;
document.getElementById('nb').innerHTML = x;
}
</script>

<p>Vous avez cliquez <b id='nb'>0</b> fois </p>
<input type="button" onclick="compteur(x)" value="Cliquez ici" />

</body>
</html>

4 réponses

Zempachi Messages postés 7472 Date d'inscription vendredi 14 octobre 2005 Statut Contributeur Dernière intervention 5 juin 2020 906
17 août 2009 à 08:53
Salut,

1. var x=0
2. function compteur(x)
3. {
4. var x = x+1;
5. document.getElementById('nb').innerHTML = x;
6. }

A la ligne 1, tu définis une variable globale.
A la ligne 4, tu définis une variable locale qui porte le même nom que ta variable globale mais c'est une variable bien distincte.
Du coup ta variable globale n'est pas modifiée par ta fonction compteur puisque celle-ci agit la variable locale.
Ainsi, quand tu cliques sur le bouton "Cliquez ici", x vaut toujours 0 et donc "nb" affiche toujours 1.

Pour que ta fonction agisse directement sur ta variable globale, il suffit de retirer le mot clé "var" de la ligne 4.
En effet, ce mot clé indique qu'on définit une nouvelle variable.
0
themegabit Messages postés 31 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 20 août 2009
17 août 2009 à 22:21
J'ai enlevé var mais le compteur s'arrête toujours à 1.
quelqu'un as une autre idée?
0
Zempachi Messages postés 7472 Date d'inscription vendredi 14 octobre 2005 Statut Contributeur Dernière intervention 5 juin 2020 906
19 août 2009 à 08:43
bizarre,
beh alors passe une référence en paramètre:
function compteur(&x)
0
themegabit Messages postés 31 Date d'inscription lundi 17 août 2009 Statut Membre Dernière intervention 20 août 2009
19 août 2009 à 16:52
ça va maintenant j'ai trouvé mon erreur
merci
0