Bonjour, quelqu'un pourrait m'expliquer pourquoi mon code est faux svp ?

Le log console me renvoi "undefined"...

<h3>
<a onclick="maF('a')">a   &nbsp; &nbsp;</a><a onclick="maF('b')">b  &nbsp;  &nbsp;</a><a onclick="maF('c')">c    &nbsp;&nbsp;</a><a onclick="maF('d')">d    &nbsp;&nbsp;</a>
<a onclick="maF('e')">e    &nbsp;&nbsp;</a><a onclick="maF('f')">f    &nbsp;&nbsp;</a><a onclick="maF('g')">g    &nbsp;&nbsp;</a>
<a onclick="maF('h')">h   &nbsp; &nbsp;</a><a onclick="maF('i')">i    &nbsp;&nbsp;</a><a onclick="maF('j')">j   &nbsp; &nbsp;</a>
<a onclick="maF('k')">k    &nbsp;&nbsp;</a><a onclick="maF('l')">l    &nbsp;&nbsp;</a><a onclick="maF('m')">m   &nbsp; &nbsp;</a>
<a onclick="maF('n')">n    &nbsp;&nbsp;</a><a onclick="maF('o')">o    &nbsp;&nbsp;</a><a onclick="maF('p')">p   &nbsp; &nbsp;</a>
<a onclick="maF('q')">q    &nbsp;&nbsp;</a><a onclick="maF('r')">r   &nbsp; &nbsp;</a><a onclick="maF('s')">s   &nbsp; &nbsp;</a>
<a onclick="maF('t')">t    &nbsp;&nbsp;</a><a onclick="maF('u')">u    &nbsp;&nbsp;</a><a onclick="maF('v')">v   &nbsp; &nbsp;</a>
<a onclick="maF('w')">w    &nbsp;&nbsp;</a><a onclick="maF('x')">x    &nbsp;&nbsp;</a><a onclick="maF('y')">y   &nbsp; &nbsp;</a>
<a onclick="maF('z')">z    &nbsp;&nbsp;</a>
</h3>

<script type="text/javascript">
var monTexte;
var maLettre;
function maF(maLettre){
    monTexte= document.getElementById(maLettre);

}

var choix_utilisateur =monTexte;
var tab =  new Array();
 tab[0]=choix_utilisateur;
 tab[1]=choix_utilisateur;
 tab[2]=choix_utilisateur;
 tab[3]=choix_utilisateur;
 tab[4]=choix_utilisateur;
 tab[5]=choix_utilisateur;
 tab[6]=choix_utilisateur;
 tab[7]=choix_utilisateur;
 console.log(maLettre);
console.log(choix_utilisateur);
 console.log(tab);
</script>

8 réponses


Lartak
Réponse acceptée

Il te suffit de modifier par :

var tab = [];
function maF(maLettre) {
    tab.push(maLettre);
    console.log(tab);
}
<script type="text/javascript">
// Variables globales
var monTexte;   // monTexte = undefined             (1)
var maLettre;     // maLettre = undefined               (2)

// déclaration d'une fonction
function maF(maLettre){
     // ici maLettre est une variable locale qui n'existe que dans la fonction
     // cela ne modifie pas la valeur de la variable globale maLettre déclarée en (2)

     // tu cherches une balise html avec id = maLettre or ton html ne contient aucun élément avec un id
     // donc monTexte sera toujours null
    monTexte= document.getElementById(maLettre);

}

var choix_utilisateur =monTexte;    // choix_utilisateur = undefined car monTexte = undefined voir (1)
var tab =  new Array();
 tab[0]=choix_utilisateur;
 tab[1]=choix_utilisateur;
 tab[2]=choix_utilisateur;
 tab[3]=choix_utilisateur;
 tab[4]=choix_utilisateur;
 tab[5]=choix_utilisateur;
 tab[6]=choix_utilisateur;
 tab[7]=choix_utilisateur;
 console.log(maLettre);                 // valeur de maLettre sera toujours undefined voir (2)
console.log(choix_utilisateur);     // undefined
 console.log(tab);
</script>

Donc, mon conseil : commences un cours pour apprendre javascript depuis le début car il y a beaucoup de concepts de base que tu ne maîtrises pas. Après tu verras que ton code ne fais rien. Bon courage

RIg
Auteur

j'ai finalement réussi (en partie ) en faisant :

<h3>
<a onclick="maF('a')">a   &nbsp; &nbsp;</a><a onclick="maF('b')">b  &nbsp;  &nbsp;</a><a onclick="maF('c')">c    &nbsp;&nbsp;</a><a onclick="maF('d')">d    &nbsp;&nbsp;</a>
<a onclick="maF('e')">e    &nbsp;&nbsp;</a><a onclick="maF('f')">f    &nbsp;&nbsp;</a><a onclick="maF('g')">g    &nbsp;&nbsp;</a>
<a onclick="maF('h')">h   &nbsp; &nbsp;</a><a onclick="maF('i')">i    &nbsp;&nbsp;</a><a onclick="maF('j')">j   &nbsp; &nbsp;</a>
<a onclick="maF('k')">k    &nbsp;&nbsp;</a><a onclick="maF('l')">l    &nbsp;&nbsp;</a><a onclick="maF('m')">m   &nbsp; &nbsp;</a>
<a onclick="maF('n')">n    &nbsp;&nbsp;</a><a onclick="maF('o')">o    &nbsp;&nbsp;</a><a onclick="maF('p')">p   &nbsp; &nbsp;</a>
<a onclick="maF('q')">q    &nbsp;&nbsp;</a><a onclick="maF('r')">r   &nbsp; &nbsp;</a><a onclick="maF('s')">s   &nbsp; &nbsp;</a>
<a onclick="maF('t')">t    &nbsp;&nbsp;</a><a onclick="maF('u')">u    &nbsp;&nbsp;</a><a onclick="maF('v')">v   &nbsp; &nbsp;</a>
<a onclick="maF('w')">w    &nbsp;&nbsp;</a><a onclick="maF('x')">x    &nbsp;&nbsp;</a><a onclick="maF('y')">y   &nbsp; &nbsp;</a>
<a onclick="maF('z')">z    &nbsp;&nbsp;</a>
</h3>

function maF(maLettre){
var tab =  new Array();
var monTexte = maLettre;
for(var AA=0;AA<9; AA++){
 tab.push(monTexte)[AA];
 }

 }

Mais je n'enregistre qu'un seul clic dans tous les tab .
J'essaye de faire en sorte que huit clics possibles soient enregistrés et pas un seul.

tu peux enregistrer autant de clics que tu veux.

var monTexte = '';
function maF(maLettre){
    monTexte += maLettre;
    console.log(monTexte);
 }
RIg
Auteur

oui effectivement mais tout est enregistré en compacte et je ne parviens pas à enregistrer à la suite pour le ranger dans un tableau car là mon tableau va contenir par exemple :
tab[0] = e;
tab[1] = er;

alors que je souhaite avoir :
tab[0] = e;
tab[1] = r;

RIg
Auteur

Alors si je comprend bien le pbm c'était juste mon tableau ...
Il fallait le déclarer en [] et pas new Array ?
Quelqu'un pourrait m'expliquer la différence svp ?

Sinon merci beaucoup ça marche !

Alors si je comprend bien le pbm c'était juste mon tableau ...

Non, le problème c'est que ton tableau étant défini dans la fonction même, il était forcément vide au départ à chaque fois que la fonction était appelée, pour qu'une variable puisse avoir un genre d'incrémentation de sa valeur, il faut qu'elle soit défini en externe de la fonction.

RIg
Auteur

d'accord merci ^^