Résultats du Quiz JavaScript / DOM moyen

  1. Quels sont les types de nombres définis en JavaScript ?

    • Integer et Float.
    • Number.
    • Number et Double.
    • Number et Integer.

    JavaScript ne fait pas la différence entre les nombres entiers et décimaux.

    Pour en savoir plus : L’objet Number.

  2. Que signifie l'acronyme AJAX ?

    • Advanced JavaScript with XMLHttpRequest.
    • Asynchronous JavaScript and XML.
    • JavaScript extensible.
    • Rien, c’est juste une suite de lettres sans aucune signification.

    "Asynchronous JavaScript and XML" signifie "XML et JavaScript asynchrones". La portée de ce terme est assez floue, en raison de l’énorme effet de mode qui y est associé. Il désigne en général la combinaison d’un ensemble de technologies (JavaScript, DOM, XMLHTTPRequest, (X)HTML, CSS,...) dans le but d’offrir à l'utilisateur un mode de navigation plus réactif et plus proche des interfaces graphiques lourdes.

    Pour en savoir plus : AJAX (article Wikipédia).

  3. Quel est l'équivalent pour un noeud de l'arbre DOM de node.childNodes[1] (en supposant que le noeud demandé existe) ?

    • node.firstChild
    • node.firstChild.nextSibling
    • node.previousSibling.parentNode
    • node.lastChild.previousSibling

    node.childNodes[1] signifie " le second fils de ce n¶ud ".

    Pour en savoir plus : " Les méthodes relationnelles dans le DOM ".

  4. Quelle syntaxe est correcte pour que la fonction init soit appelée au chargement de la page ?

    • window.onload = init;
    • window.onload = init();
    • window.onload() = init;
    • window.onload() = init();

    On attribue à l'attribut onload de l'objet window ( window.onload) la référence à la fonction init (et non pas le résultat de l'appel à init, que l'on aurait écrit init()).

    Pour en savoir plus : "Séparer le comportement de la structure".

  5. Quand l'événement "load" se déclenche-t-il pour une page ?

    • Dès que le navigateur commence à recevoir le code HTML.
    • Quand le code HTML a fini d'être chargé.
    • Quand l'arbre DOM a été construit.
    • Quand l'arbre DOM a été construit et toutes les ressources chargées (images, ...).

    Ce comportement peut d'ailleurs être parfois gênant si l'on veut éviter un " clignotement " au chargement de la page. Il faut alors se tourner vers des solutions propriétaires comme l'événement DOMContentLoaded supporté par Firefox et Opera.

    Pour en savoir plus : " Les types d’événements HTML ".

  6. Que peut-on dire de l'attribut innerHTML ?

    • C'est un attribut qui n'est pas spécifié dans le DOM, mais qui est plutôt bien supporté par les navigateurs modernes.
    • C'est un attribut spécifié dans le DOM.
    • C'est un attribut qui n'est supporté que par Internet Explorer.
    • C'est un attribut qui ne fonctionne pas le vendredi.

    innerHTML a été créé par Microsoft, mais est supporté de façon plutôt homogène par les navigateurs modernes (à part dans certains cas particuliers, par exemple les premières versions de Firefox pour un document servi en tant que application/xhtml+xml).

    Pour en savoir plus : "W3C DOM compatibility".

  7. Peut-on accéder aux commentaires d'un document HTML ?

    • Non, ce n'est pas possible
    • Oui, avec document.body.commentaries
    • Oui, avec node.nodeType évalué à 7
    • Oui, avec Node.COMMENT_NODE

    La réponse est : Oui, avec Node.COMMENT_NODE.

    Pour en savoir plus : "element.nodeType".

  8. for(; ; ) { ... } Que se passe-t-il avec cette instruction ?

    • C'est une boucle infinie qu'on peut arrêter avec une condition.
    • On obtient la valeur undefined
    • On obtient la valeur null
    • Il ne se passe rien ! Mais j'ai triché pour répondre : J'ai essayé de le faire !

    C'est une boucle infinie qu'on peut arrêter avec une condition..

    var iI = 0;
    for(; ; )
    {
    	alert(++iI);
    	if(iI === 5) break;
    }
    

  9. Lequel de ces codes n’affichera pas 3 ?

    • alert(Math.max(-4, 3));
    • var i = 3; alert(i++);
    • alert(parseInt("3"));
    • alert(Math.floor(2.9));

    Math.max renvoie le plus grand des deux nombres passés en paramètres. L’opérateur de post-incrémentation (i++) renvoie la valeur de la variable i avant l’incrémentation. parseInt transforme la chaîne de caractères passée en paramètre en nombre entier. Quant à Math.floor, elle renvoie le plus grand nombre entier inférieur ou égal au nombre passé en paramètre (c’est-à-dire 2 dans cet exemple).

  10. for(; iI < iJ; iI++, iJ--) { ... } Est-il possible d'écrire une boucle de cette forme ?

    • Non, la boucle n'est pas initialisée
    • Oui, sans problème
    • Non, on ne peut pas se servir de deux compteurs à la fois
    • Oui, à condition d'avoir initialisé les variables en amont

    La réponse est : Oui, à condition d'avoir initialisé les variables en amont

    var aTab = [10, 8 ,6 , 4];
    // Lecture du tableau d'origine
    alert("Le tableau d'origine comporte les valeurs : " + aTab.valueOf());
    // Emulation de la méthode reverse
    var iA = 0,
        iB,
        iC = aTab.length - 1;
    for(; iA < iC; iA++, iC--)
    {
    	iB = aTab[iA];
    	aTab[iA] = aTab[iC];
    	aTab[iC] = iB;
    }
    // Nouvelle lecture
    alert("L'émulation de la méthode reverse donne : " + aTab.valueOf());
    // Méthode reverse
    aTab.reverse();
    // Nouvelle lecture
    alert("On retrouve le tableau d'origine à l'aide la méthode reverse : " + aTab.valueOf());
    

Score 0/10

Le verdict de Bernard Minet

As-tu bien compris le principe de cocher les cases ?