Résolu JS: querySelectorAll non fonctionnelle ?

Statut
N'est pas ouverte pour d'autres réponses.

Neerfix

Développeur Web
Premium
Inscription
15 Décembre 2013
Messages
224
Réactions
49
Points
9 528
Bonjour, encore moi et mes problèmes en javascript.
Je veux faire un jeu en javascript. des lettres ou des chiffres s'affichent aléatoirement sur l'écran et on doit appuyer sur la touche approprié pour la supprimer.
Chaque lettre/chiffre afficher, est une div:
HTML:
<div class="char a">A</div>
(A-Z et 0-9).

Voilà, donc j'ai réussi à sélectionner une div contenant les classes "char" et "a" avec la méthode :
Code:
document.querySelectorAll('.char.a')
J'arrive donc à sélectionner les div, ajouter un point si elle existe et supprimer la div pour faire disparaitre la lettre de l'écran.

Cependant. Lorsque je veux sélectionner une div contenant les classes "char" et "0" (n'importe quel chiffre 0-9), une erreur se produit et donc ne marche pas.

VM791:1 Uncaught DOMException: Failed to execute 'querySelectorAll' on 'Document': '.char.9' is not a valid selector.

J'ai essayé avec la méthode document.getElementByClassName(9) (sans guillemet) et ça marche à moitié. (Avec guillement, ça marche pas) Cela ajoute seulement le nombre de point. Mais en aucun cas, la div n'est supprimé.
 

Neerfix

Développeur Web
Premium
Inscription
15 Décembre 2013
Messages
224
Réactions
49
Points
9 528
Il ne faut pas que tu sélectionnes avec "document.getElementByClassName", mais avec document.getElementById('9').

Comment tu fais par la suite pour compter le nombre d'élément trouver ?
Par exemple, pour les lettres, je fais :
Code:
                    var select = document.querySelectorAll(".char.z").length;
                    if(select > 0){ // S'il y a un element ou plus, on increment le score et on supprime la div. Sinon on enlève un point.
                        score_number.innerHTML++;
                        eve.preventDefault();
                        var div = document.querySelector(".char.z");
                        div.remove();
                    }else {
                        score_number.innerHTML--;
                    }
Je sélectionne au début avec "document.querySelectorAll" pour compter le nombre d'élement, or avec "document.getElementById('9')" Je ne peux pas :
Uncaught TypeError: Cannot read property 'length' of null
 

ArKantiK

Spécialiste Open-source et Distributions GNU/Linux
Premium
Inscription
14 Décembre 2017
Messages
343
Réactions
142
Points
908

Voici comment doit être formulé ton code :

Code:
$(document).ready(function () {
    var categorydivs = $(".category-container");
    $.each(categorydivs, function (index, div) {
        $(this).css("background-color", "yellow");
    });
});

Modifie le code en fonction du tien.​
 

Neerfix

Développeur Web
Premium
Inscription
15 Décembre 2013
Messages
224
Réactions
49
Points
9 528

Voici comment doit être formulé ton code :

Code:
$(document).ready(function () {
    var categorydivs = $(".category-container");
    $.each(categorydivs, function (index, div) {
        $(this).css("background-color", "yellow");
    });
});

Modifie le code en fonction du tien.​
C'est du jQuery, j'essaie de faire sans ^^ Et donc j'ai envoyé un mail à mon prof pour avoir son point de vue et sa remarque :
J’ai l’impression que la class avec un chiffre uniquement casse tout. Il doit tenter de l’assimiler a un sélecteur css.
Change tes numéros en lettre : 4 => quatre , etc….
Et ça marche, donc merci encore de ton aide mais c'est résolu :)
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut