Vanilla-Js
Javascript-Natif
Quiz-Vanilla-Js-Debutant
Manipulation-Dom
Evenements-Js
Classlist
Settimeout
Questions-Entretien-Vanilla-Js
Qcm-Vanilla-Js
Apprendre-Javascript-Natif
Javascript
Front-End
Es6
No-Framework
📝
Entretien Vanilla JS Débutant — DOM et Événements
20 questions Vanilla JS niveau débutant : sélecteurs DOM, manipulation d'éléments, événements, classList, setTimeout et méthodes de base. Idéal pour valider les fondamentaux du JavaScript natif avant un entretien.
Banque de révision : les 31 questions corrigées
Voici l'intégralité des 31 questions de « Entretien Vanilla JS Débutant — DOM et Événements », chacune avec sa bonne réponse et son explication. Le quiz interactif ci-dessus en tire une sélection aléatoire à chaque tentative — utilisez cette liste complète pour réviser.
Explication :
querySelector() retourne le premier élément correspondant au sélecteur CSS. querySelectorAll() retourne tous les éléments correspondants sous forme de NodeList.
query = "chercher" + Selector = "sélecteur CSS"
Explication :
addEventListener(type, callback) est la méthode standard pour attacher un gestionnaire d'événement. Elle permet aussi d'ajouter plusieurs écouteurs sur le même élément.
add + Event + Listener = addEventListenerListener
Explication :
let a une portée de bloc (block scope) — elle n'existe que dans le bloc {} où elle est déclarée. var a une portée de fonction (function scope) et est remontée (hoisting) en haut de la fonction.
let = limité au bloc, var = visible dans la fonction entière
Explication :
La propriété .value retourne la valeur actuelle d'un élément input, select ou textarea. C'est la propriété DOM standard pour lire ou modifier le contenu d'un champ de formulaire.
input.value = la valeur du champ
Explication :
classList.toggle("active") fonctionne comme un interrupteur : si la classe est absente elle l'ajoute, si elle est présente elle la supprime. Très utile pour les menus hamburger ou les accordéons.
toggle = bascule (comme un interrupteur on/off)
Explication :
querySelectorAll() retourne une NodeList statique de tous les éléments correspondant au sélecteur. Il faut ensuite itérer dessus avec forEach() ou un for...of.
querySelectorAll → All = tous les éléments
Explication :
document.createElement("tagName") crée un nouvel élément HTML en mémoire. L'élément n'est pas encore inséré dans le DOM — il faut ensuite utiliser appendChild() ou insertBefore().
create = créer, Element = élément HTML
Explication :
typeof null retourne "object" — c'est un bug historique de JavaScript (présent depuis 1995) qui n'a jamais été corrigé pour des raisons de compatibilité. Pour vérifier si une valeur est null, utilisez val === null.
Bug célèbre de JS : typeof null === "object" (pas corrigeable)
Explication :
appendChild(node) ajoute un nœud à la fin de la liste des enfants d'un élément parent. Si le nœud existe déjà dans le DOM, il est déplacé vers la nouvelle position.
append = ajouter à la fin, Child = enfant
Explication :
JSON.parse(string) convertit une chaîne JSON valide en un objet JavaScript. L'opération inverse (objet → chaîne) s'effectue avec JSON.stringify().
parse = analyser/interpréter la chaîne JSON
Explication :
event.preventDefault() annule l'action par défaut associée à l'événement. Par exemple, sur un formulaire cela empêche le rechargement de la page, sur un lien cela empêche la navigation.
prevent = empêcher, Default = comportement par défaut
Explication :
setTimeout(fn, ms) exécute la fonction fn une seule fois après le délai spécifié en millisecondes. Pour une répétition, utilisez setInterval(fn, ms) à la place.
setTimeout = une seule fois | setInterval = répétition
Explication :
array.length est une propriété (pas une méthode) qui retourne le nombre d'éléments dans un tableau. Elle est aussi utilisable sur les chaînes de caractères pour compter les lettres.
length est une propriété, pas une méthode — pas de parenthèses ()
Explication :
push() ajoute un ou plusieurs éléments à la fin du tableau et retourne la nouvelle longueur. L'opération inverse (suppression à la fin) est pop(). Pour le début : unshift() ajoute, shift() supprime.
push → fin | pop → retire de la fin | unshift → début | shift → retire du début
Explication :
element.style.propertyName donne accès aux styles CSS inline d'un élément. Les propriétés CSS avec tirets s'écrivent en camelCase : background-color devient backgroundColor.
element.style.color — les tirets CSS deviennent camelCase en JS
Explication :
innerHTML permet de lire ou d'écrire le contenu HTML brut d'un élément, balises comprises. Attention : injecter du HTML non sanitisé expose à des failles XSS. Préférer textContent pour du texte simple.
innerHTML = HTML avec balises | textContent = texte brut (plus sécurisé)
Explication :
array.includes(value) retourne true si la valeur est présente dans le tableau, false sinon. La comparaison utilise SameValueZero (similaire à ===). Fonctionne aussi sur les chaînes de caractères.
includes → "est-ce que le tableau inclut cette valeur ?"
Explication :
pop() supprime le dernier élément du tableau et le retourne. Le tableau est modifié en place (mutation). shift() fait la même chose mais sur le premier élément.
pop = retire de la fin (comme une pile LIFO) | shift = retire du début
Explication :
for...of est la syntaxe moderne pour itérer sur les valeurs d'un tableau. for...in itère sur les clés/index et est déconseillé pour les tableaux car il peut inclure les propriétés héritées.
for...of = valeurs du tableau | for...in = clés d'objet (pas pour les tableaux)
Explication :
classList.contains("className") vérifie si l'élément possède la classe spécifiée et retourne un booléen. Utile pour conditionner une action selon l'état d'un élément.
contains = "contient-il cette classe ?" → true/false
Explication :
getAttribute("attrName") retourne la valeur de l'attribut spécifié. Pour modifier un attribut : setAttribute("name", "value"). Pour supprimer : removeAttribute("name").
get/set/removeAttribute — le trio standard pour les attributs HTML
Explication :
join(separator) joint tous les éléments du tableau en une chaîne avec le séparateur spécifié. Ex: ["a","b","c"].join("-") retourne "a-b-c". Sans argument, utilise la virgule par défaut.
join = relier les éléments avec un séparateur
Explication :
clearInterval(id) arrête un intervalle. setInterval retourne un identifiant numérique qu'il faut stocker : const id = setInterval(fn, ms). Pour les timeouts : clearTimeout(id).
clear + Interval = clearInterval | clear + Timeout = clearTimeout
Explication :
stopPropagation() arrête la "remontée" (bubbling) de l'événement dans l'arbre DOM. Sans elle, un click sur un enfant se propage aussi aux parents. À distinguer de preventDefault() qui empêche l'action par défaut.
stop + Propagation = stoppe la remontée | preventDefault = stoppe l'action
Explication :
En JavaScript, l'opérateur + avec une chaîne et un nombre effectue une concaténation, pas une addition. "3" + 3 donne "33". Pour forcer l'addition : Number("3") + 3 = 6.
Si un opérande est une chaîne, + fait de la concaténation
Explication :
element.remove() supprime l'élément lui-même du DOM. C'est la méthode moderne (ES5+). L'ancienne méthode était parentNode.removeChild(element) qui nécessitait d'accéder au parent.
element.remove() = suppression directe | ancienne méthode : parent.removeChild(el)
Explication :
querySelectorAll() retourne toujours une NodeList, même vide. C'est différent de querySelector() qui retourne null si rien n'est trouvé. Vérifier avec nodeList.length > 0 avant d'itérer.
querySelectorAll → NodeList vide | querySelector → null si rien trouvé
Explication :
Les deux syntaxes fonctionnent. img.src est une propriété IDL (reflet de l'attribut HTML) qui accepte une URL relative ou absolue. setAttribute() modifie directement l'attribut HTML. En pratique, on préfère img.src pour sa clarté.
img.src et setAttribute("src", ...) sont équivalentes pour les images
Explication :
Le DOM est une interface de programmation qui représente le document HTML/XML sous forme d'arbre de nœuds. JavaScript peut lire et modifier cet arbre pour changer dynamiquement le contenu, la structure et le style de la page.
DOM = arbre de nœuds = interface entre HTML et JavaScript
Explication :
String(num) et num.toString() convertissent toutes les deux un nombre en chaîne. String() est une fonction globale qui fonctionne même avec null/undefined. toString() peut prendre une base en argument : num.toString(16) pour l'hexadécimal.
String(num) ou num.toString() — toString(16) pour l'hexadécimal
Explication :
classList.add("className") ajoute une classe sans toucher aux autres. On peut ajouter plusieurs classes : classList.add("a", "b", "c"). Pour supprimer : classList.remove(). Pour vérifier : classList.contains().
classList.add/remove/toggle/contains — les 4 méthodes essentielles