Bonsoir à tous !
Dans le cadre de mes études, j'ai commencé il y a quelques semaines à étudier html/css/javascript et j'ai un projet à rendre bientôt. Ce projet concerne la mise en place d'un Sudoku en utilisant html/css/javascript.
Et il se trouve que j'ai un petit problème. Je vais essayer d'être le plus clair possible: Notre professeur nous a fourni un code javascript contenant la grille initiale du sudoku :
J'ai donc crée un tableau en html représentant cette grille. Et pour chaque case vide, j'ai mis un input text. En voici par exemple un :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 var grid0 = [ [8, 5, 2, null, 6, 3, 9, null, 4], [null, null, null, null, null, 9, null, 6, null], [null, null, 9, null, null, null, null, null, 1], [null, 4, 8, 9, null, null, 6, null, 2], [null, null, 3, 2, null, 1, 7, null, null], [1, null, 7, null, null, 5, 4, 9, null], [2, null, null, null, null, null, 5, null, null], [null, 8, null, 7, null, null, null, null, null], [4, null, 1, 3, 5, null, 2, 8, 7] ];
Code html : Sélectionner tout - Visualiser dans une fenêtre à part <input type="text" id="1-0" class="input", MAXLENGTH="1" onchange="verif(this.id)"/>
L'utilisateur rentre donc un chiffre. Le changement de valeur de l'input va lancer la fonction verif() . Je vous épargne tout le code de cette fonction pour vous donner uniquement là où ça cloche:
Ici, val est la valeur que l'on trouve dans l'input en question. Si val != "", c'est à dire si l'utilisateur a rentré un chiffre, alors cette fonction va vérifier que le chiffre entré par l'utilisateur ne se trouve ni déjà sur la ligne, ni déjà sur la colonne, ni déjà dans le carré. Et si après vérification, il se trouve que le chiffre rentré est juste, alors on le met dans la grille initiale javascript à la place du null.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 if (val != ""){ ... grid0[ligne][colonne] = parseFloat(val); } if (val == ""){ grid0[ligne][colonne] = null; }
Cette partie là fonctionne bien. Mais c'est avec l'autre if que ça coince. Si val est égal à "", c'est à dire s'il n'y a rien de rentré dans la case, alors on met null dans la grille initiale.
En fait, avec cette partie je souhaitais gérer la situation où l'utilisateur rentre une valeur juste dans l'input puis la supprime. Si elle est juste, elle est rajoutée à la grille initiale javascript. Mais si après l'utilisateur décide de l'effacer bien qu'elle semblait juste, alors sa valeur reste dans la grille initiale, ce qui fausse les autres vérifications. Du coup, avec ce second if, je voulais remettre null dans la grille si l'utilisateur efface son chiffre.
Seulement, pour une raison qui m'échappe, ça ne marche pas. On dirait que le onchange gère seulement quand l'utilisateur rentre un chiffre, pas quand il en efface un. Quand j'efface un chiffre, ma fonction ne rentre pas dans ce second if.
Pouvez-vous m'expliquer pourquoi ?
Merci d'avance, et désolé si c'est un peu long !
Partager