diff --git a/2-ui/1-document/05-basic-dom-node-properties/2-lastchild-nodetype-inline/solution.md b/2-ui/1-document/05-basic-dom-node-properties/2-lastchild-nodetype-inline/solution.md index 52c34640a..da2843ba7 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/2-lastchild-nodetype-inline/solution.md +++ b/2-ui/1-document/05-basic-dom-node-properties/2-lastchild-nodetype-inline/solution.md @@ -1,8 +1,8 @@ -There's a catch here. +Il y a un piège ici. -At the time of ` ``` -What's going on step by step: +Ce qui se passe pas à pas : -1. The content of `` is replaced with the comment. The comment is ``, because `body.tagName == "BODY"`. As we remember, `tagName` is always uppercase in HTML. -2. The comment is now the only child node, so we get it in `body.firstChild`. -3. The `data` property of the comment is its contents (inside ``): `"BODY"`. +1. Le contenu de `` est remplacé par le commentaire. Le commentaire est ``, car `body.tagName == "BODY"`. Comme nous nous en souvenons, `tagName` est toujours en majuscule en HTML. +2. Le commentaire est maintenant le seul nœud enfant, donc nous l'avons dans `body.firstChild`. +3. La propriété `data` du commentaire est son contenu (à l'intérieur ``) : `"BODY"`. diff --git a/2-ui/1-document/05-basic-dom-node-properties/3-tag-in-comment/task.md b/2-ui/1-document/05-basic-dom-node-properties/3-tag-in-comment/task.md index efe50b48f..eb9ae9a62 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/3-tag-in-comment/task.md +++ b/2-ui/1-document/05-basic-dom-node-properties/3-tag-in-comment/task.md @@ -2,9 +2,9 @@ importance: 3 --- -# Tag in comment +# Balise dans le commentaire -What does this code show? +Qu'affice ce code ? ```html ``` diff --git a/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/solution.md b/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/solution.md index cb9456717..7a9c53b62 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/solution.md +++ b/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/solution.md @@ -1,33 +1,33 @@ -We can see which class it belongs by outputting it, like: +Nous pouvons voir à quelle classe il appartient en le sortant, comme : ```js run alert(document); // [object HTMLDocument] ``` -Or: +Ou : ```js run alert(document.constructor.name); // HTMLDocument ``` -So, `document` is an instance of `HTMLDocument` class. +Ainsi, `document` est une instance de la classe `HTMLDocument`. -What's its place in the hierarchy? +Quelle est sa place dans la hiérarchie ? -Yeah, we could browse the specification, but it would be faster to figure out manually. +Oui, nous pourrions parcourir les spécifications, mais il serait plus rapide de le déterminer manuellement. -Let's traverse the prototype chain via `__proto__`. +Parcourons la chaîne du prototype via `__proto__`. -As we know, methods of a class are in the `prototype` of the constructor. For instance, `HTMLDocument.prototype` has methods for documents. +Comme nous le savons, les méthodes d'une classe sont dans le `prototype` du constructeur. Par exemple, `HTMLDocument.prototype` a des méthodes pour les documents. -Also, there's a reference to the constructor function inside the `prototype`: +De plus, il y a une référence à la fonction constructeur à l'intérieur du `prototype` : ```js run alert(HTMLDocument.prototype.constructor === HTMLDocument); // true ``` -To get a name of the class as a string, we can use `constructor.name`. Let's do it for the whole `document` prototype chain, till class `Node`: +Pour obtenir le nom de la classe sous forme de chaîne de caractères, nous pouvons utiliser `constructor.name`. Faisons-le pour toute la chaîne du prototype de `document`, jusqu'à la classe` Node`: ```js run alert(HTMLDocument.prototype.constructor.name); // HTMLDocument @@ -35,6 +35,6 @@ alert(HTMLDocument.prototype.__proto__.constructor.name); // Document alert(HTMLDocument.prototype.__proto__.__proto__.constructor.name); // Node ``` -That's the hierarchy. +Voilà la hiérarchie. -We also could examine the object using `console.dir(document)` and see these names by opening `__proto__`. The console takes them from `constructor` internally. +Nous pourrions également examiner l'objet en utilisant `console.dir(document)` et voir ces noms en ouvrant `__proto__`. La console les prend du constructeur en interne. diff --git a/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/task.md b/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/task.md index de266c6ae..1cdeef96d 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/task.md +++ b/2-ui/1-document/05-basic-dom-node-properties/4-where-document-in-hierarchy/task.md @@ -2,10 +2,10 @@ importance: 4 --- -# Where's the "document" in the hierarchy? +# Où est le "document" dans la hiérarchie ? -Which class does the `document` belong to? +À quelle classe appartient le `document` ? -What's its place in the DOM hierarchy? +Quelle est sa place dans la hiérarchie DOM ? -Does it inherit from `Node` or `Element`, or maybe `HTMLElement`? +Hérite-t-il de `Node` ou` Element`, ou peut-être de `HTMLElement` ? diff --git a/2-ui/1-document/05-basic-dom-node-properties/article.md b/2-ui/1-document/05-basic-dom-node-properties/article.md index 76469c187..a870ff835 100644 --- a/2-ui/1-document/05-basic-dom-node-properties/article.md +++ b/2-ui/1-document/05-basic-dom-node-properties/article.md @@ -1,46 +1,46 @@ -# Node properties: type, tag and contents +# Propriétés de nœud : type, balise et contenu -Let's get a more in-depth look at DOM nodes. +Voyons plus en détail les nœuds DOM. -In this chapter we'll see more into what they are and learn their most used properties. +Dans ce chapitre, nous verrons plus en détail ce qu'ils sont et découvrirons leurs propriétés les plus utilisées. -## DOM node classes +## Classes de nœud DOM -Different DOM nodes may have different properties. For instance, an element node corresponding to tag `` has link-related properties, and the one corresponding to `` has input-related properties and so on. Text nodes are not the same as element nodes. But there are also common properties and methods between all of them, because all classes of DOM nodes form a single hierarchy. +Différents nœuds DOM peuvent avoir des propriétés différentes. Par exemple, un nœud élément correspondant à la balise `` a des propriétés liées aux liens, et celui correspondant à `` a des propriétés liées aux entrées, etc. Les nœuds texte ne sont pas identiques aux nœuds élément. Mais il existe également des propriétés et des méthodes communes à chacun d'entre eux, car toutes les classes de nœuds DOM forment une hiérarchie unique. -Each DOM node belongs to the corresponding built-in class. +Chaque nœud DOM appartient à la classe intégrée correspondante. -The root of the hierarchy is [EventTarget](https://dom.spec.whatwg.org/#eventtarget), that is inherited by [Node](http://dom.spec.whatwg.org/#interface-node), and other DOM nodes inherit from it. +La racine de la hiérarchie est [EventTarget](https://dom.spec.whatwg.org/#eventtarget), hérité par [Node](http://dom.spec.whatwg.org/#interface-node), et d'autres nœuds DOM en héritent. -Here's the picture, explanations to follow: +Voici l'image, les explications à suivre : ![](dom-class-hierarchy.svg) -The classes are: +Les classes sont : -- [EventTarget](https://dom.spec.whatwg.org/#eventtarget) -- is the root "abstract" class. Objects of that class are never created. It serves as a base, so that all DOM nodes support so-called "events", we'll study them later. -- [Node](http://dom.spec.whatwg.org/#interface-node) -- is also an "abstract" class, serving as a base for DOM nodes. It provides the core tree functionality: `parentNode`, `nextSibling`, `childNodes` and so on (they are getters). Objects of `Node` class are never created. But there are concrete node classes that inherit from it, namely: `Text` for text nodes, `Element` for element nodes and more exotic ones like `Comment` for comment nodes. -- [Element](http://dom.spec.whatwg.org/#interface-element) -- is a base class for DOM elements. It provides element-level navigation like `nextElementSibling`, `children` and searching methods like `getElementsByTagName`, `querySelector`. A browser supports not only HTML, but also XML and SVG. The `Element` class serves as a base for more specific classes: `SVGElement`, `XMLElement` and `HTMLElement`. -- [HTMLElement](https://html.spec.whatwg.org/multipage/dom.html#htmlelement) -- is finally the basic class for all HTML elements. It is inherited by concrete HTML elements: - - [HTMLInputElement](https://html.spec.whatwg.org/multipage/forms.html#htmlinputelement) -- the class for `` elements, - - [HTMLBodyElement](https://html.spec.whatwg.org/multipage/semantics.html#htmlbodyelement) -- the class for `` elements, - - [HTMLAnchorElement](https://html.spec.whatwg.org/multipage/semantics.html#htmlanchorelement) -- the class for `` elements, - - ...and so on, each tag has its own class that may provide specific properties and methods. +- [EventTarget](https://dom.spec.whatwg.org/#eventtarget) -- est la classe racine "abstraite". Les objets de cette classe ne sont jamais créés. Il sert de base, de sorte que tous les nœuds DOM prennent en charge les soi-disant "événements", nous les étudierons plus tard. +- [Node](http://dom.spec.whatwg.org/#interface-node) -- est également une classe "abstraite", servant de base aux nœuds DOM. Elle fournit la fonctionnalité d'arborescence de base : `parentNode`, `nextSibling`, `childNodes` et ainsi de suite (ce sont des getters). Les objets de la classe `Node` ne sont jamais créés. Mais il existe des classes de nœuds concrets qui en héritent, à savoir: `Text` pour les nœuds texte, `Element` pour les nœuds élément et plus exotiques comme `Comment` pour les nœuds commentaire. +- [Element](http://dom.spec.whatwg.org/#interface-element) -- est une classe de base pour les éléments DOM. Elle fournit une navigation au niveau des éléments comme `nextElementSibling`, `children` et des méthodes de recherche comme `getElementsByTagName`, `querySelector`. Un navigateur prend en charge non seulement HTML, mais aussi XML et SVG. La classe `Element` sert de base à des classes plus spécifiques : `SVGElement`, `XMLElement` et `HTMLElement`. +- [HTMLElement](https://html.spec.whatwg.org/multipage/dom.html#htmlelement) -- est enfin la classe de base pour tous les éléments HTML. Elle est héritée d'éléments concrets HTML : + - [HTMLInputElement](https://html.spec.whatwg.org/multipage/forms.html#htmlinputelement) -- la classe pour les éléments ``, + - [HTMLBodyElement](https://html.spec.whatwg.org/multipage/semantics.html#htmlbodyelement) -- la classe pour les éléments ``, + - [HTMLAnchorElement](https://html.spec.whatwg.org/multipage/semantics.html#htmlanchorelement) -- la classe pour les éléments ``, + - ...et ainsi de suite, chaque balise a sa propre classe qui peut fournir des propriétés et des méthodes spécifiques. -So, the full set of properties and methods of a given node comes as the result of the inheritance. +Ainsi, l'ensemble complet des propriétés et des méthodes d'un nœud donné est le résultat de l'héritage. -For example, let's consider the DOM object for an `` element. It belongs to [HTMLInputElement](https://html.spec.whatwg.org/multipage/forms.html#htmlinputelement) class. +Par exemple, considérons l'objet DOM pour un élément ``. Il appartient à la classe [HTMLInputElement](https://html.spec.whatwg.org/multipage/forms.html#htmlinputelement). -It gets properties and methods as a superposition of (listed in inheritance order): +Il obtient les propriétés et les méthodes en superposition de (répertoriées dans l'ordre d'héritage) : -- `HTMLInputElement` -- this class provides input-specific properties, -- `HTMLElement` -- it provides common HTML element methods (and getters/setters), -- `Element` -- provides generic element methods, -- `Node` -- provides common DOM node properties, -- `EventTarget` -- gives the support for events (to be covered), -- ...and finally it inherits from `Object`, so "plain object" methods like `hasOwnProperty` are also available. +- `HTMLInputElement` -- cette classe fournit des propriétés spécifiques à l'entrée, +- `HTMLElement` -- elle fournit des méthodes d'élément HTML communes (et des getters/setters), +- `Element` -- fournit des méthodes d'élément génériques, +- `Node` -- fournit des propriétés de noeud DOM communes, +- `EventTarget` -- apporte du support aux événements (à couvrir), +- ...et finalement il hérite de `Object`, donc les méthodes "plain object" comme `hasOwnProperty` sont également disponibles. -To see the DOM node class name, we can recall that an object usually has the `constructor` property. It references the class constructor, and `constructor.name` is its name: +Pour voir le nom de la classe de noeud DOM, nous pouvons rappeler qu'un objet a généralement la propriété `constructor`. Il fait référence au constructeur de classe, et `constructor.name` est son nom : ```js run alert( document.body.constructor.name ); // HTMLBodyElement @@ -52,7 +52,7 @@ alert( document.body.constructor.name ); // HTMLBodyElement alert( document.body ); // [object HTMLBodyElement] ``` -We also can use `instanceof` to check the inheritance: +Nous pouvons également utiliser `instanceof` pour vérifier l'héritage : ```js run alert( document.body instanceof HTMLBodyElement ); // true @@ -62,38 +62,38 @@ alert( document.body instanceof Node ); // true alert( document.body instanceof EventTarget ); // true ``` -As we can see, DOM nodes are regular JavaScript objects. They use prototype-based classes for inheritance. +Comme nous pouvons le voir, les nœuds DOM sont des objets JavaScript normaux. Ils utilisent des classes basées sur des prototypes pour l'héritage. -That's also easy to see by outputting an element with `console.dir(elem)` in a browser. There in the console you can see `HTMLElement.prototype`, `Element.prototype` and so on. +C'est aussi facile à voir en sortant un élément avec `console.dir (elem)` dans un navigateur. Là, dans la console, vous pouvez voir `HTMLElement.prototype`, `Element.prototype` et ainsi de suite. ```smart header="`console.dir(elem)` versus `console.log(elem)`" -Most browsers support two commands in their developer tools: `console.log` and `console.dir`. They output their arguments to the console. For JavaScript objects these commands usually do the same. +La plupart des navigateurs prennent en charge deux commandes dans leurs outils de développement : `console.log` et `console.dir`. Elles sortent leurs arguments dans la console. Pour les objets JavaScript, ces commandes font généralement la même chose. -But for DOM elements they are different: +Mais pour les éléments DOM, elles sont différents : -- `console.log(elem)` shows the element DOM tree. -- `console.dir(elem)` shows the element as a DOM object, good to explore its properties. +- `console.log(elem)` affiche l'arborescence DOM de l'élément. +- `console.dir(elem)` affiche l'élément en tant qu'objet DOM, bon pour explorer ses propriétés. -Try it on `document.body`. +Essayez les sur `document.body`. ``` -````smart header="IDL in the spec" -In the specification, DOM classes aren't described by using JavaScript, but a special [Interface description language](https://en.wikipedia.org/wiki/Interface_description_language) (IDL), that is usually easy to understand. +````smart header="IDL dans la spécification" +Dans la spécification, les classes DOM ne sont pas décrites en utilisant JavaScript, mais une [Interface description language](https://en.wikipedia.org/wiki/Interface_description_language) spéciale (IDL), qui est généralement facile à comprendre. -In IDL all properties are prepended with their types. For instance, `DOMString`, `boolean` and so on. +Dans IDL, toutes les propriétés sont précédées de leurs types. Par exemple, `DOMString`, `boolean` et ainsi de suite. -Here's an excerpt from it, with comments: +En voici un extrait, avec des commentaires : ```js -// Define HTMLInputElement +// Definir HTMLInputElement *!* -// The colon ":" means that HTMLInputElement inherits from HTMLElement +// Le signe deux-points ":" signifie que HTMLInputElement hérite de HTMLElement */!* interface HTMLInputElement: HTMLElement { - // here go properties and methods of elements + // ici les propriétés et méthodes des éléments *!* - // "DOMString" means that the value of a property is a string + // "DOMString" signifie que la valeur d'une propriété est une chaîne de caractères */!* attribute DOMString accept; attribute DOMString alt; @@ -101,12 +101,12 @@ interface HTMLInputElement: HTMLElement { attribute DOMString value; *!* - // boolean value property (true/false) + // propriété de valeur booléenne (true/false) attribute boolean autofocus; */!* ... *!* - // now the method: "void" means that the method returns no value + // maintenant la méthode : "void" signifie que la méthode ne renvoie aucune valeur */!* void select(); ... @@ -114,95 +114,95 @@ interface HTMLInputElement: HTMLElement { ``` ```` -## The "nodeType" property +## La propriété "nodeType" -The `nodeType` property provides one more, "old-fashioned" way to get the "type" of a DOM node. +La propriété `nodeType` fournit une autre méthode "à l'ancienne" pour obtenir le "type" d'un nœud DOM. -It has a numeric value: -- `elem.nodeType == 1` for element nodes, -- `elem.nodeType == 3` for text nodes, -- `elem.nodeType == 9` for the document object, -- there are few other values in [the specification](https://dom.spec.whatwg.org/#node). +Il a une valeur numérique : +- `elem.nodeType == 1` pour les nœuds élément, +- `elem.nodeType == 3` pour les nœuds texte, +- `elem.nodeType == 9` pour l'objet document, +- il y a peu d'autres valeurs dans [la spécification](https://dom.spec.whatwg.org/#node). -For instance: +Par exemple : ```html run ``` -In modern scripts, we can use `instanceof` and other class-based tests to see the node type, but sometimes `nodeType` may be simpler. We can only read `nodeType`, not change it. +Dans les scripts modernes, nous pouvons utiliser `instanceof` et d'autres tests basés sur les classes pour voir le type de nœud, mais parfois `nodeType` peut être plus simple. Nous pouvons seulement lire `nodeType`, pas le changer. -## Tag: nodeName and tagName +## Balise : nodeName et tagName -Given a DOM node, we can read its tag name from `nodeName` or `tagName` properties: +Étant donné un nœud DOM, nous pouvons lire son nom de balise dans les propriétés `nodeName` ou `tagName` : -For instance: +Par exemple : ```js run alert( document.body.nodeName ); // BODY alert( document.body.tagName ); // BODY ``` -Is there any difference between `tagName` and `nodeName`? +Y a-t-il une différence entre `tagName` et `nodeName` ? -Sure, the difference is reflected in their names, but is indeed a bit subtle. +Bien sûr, la différence se reflète dans leurs noms, mais c'est en effet un peu subtile. -- The `tagName` property exists only for `Element` nodes. -- The `nodeName` is defined for any `Node`: - - for elements it means the same as `tagName`. - - for other node types (text, comment, etc.) it has a string with the node type. +- La propriété `tagName` existe uniquement pour les nœuds `Element`. +- Le `nodeName` est défini pour tout `Node` : + - pour les éléments, cela signifie la même chose que `tagName`. + - pour les autres types de nœuds (texte, commentaire, etc.), il a une chaîne de caractères avec le type de nœud. -In other words, `tagName` is only supported by element nodes (as it originates from `Element` class), while `nodeName` can say something about other node types. + En d'autres termes, `tagName` est uniquement pris en charge par les nœuds élément (car il provient de la classe `Element`), tandis que `nodeName` peut dire quelque chose sur d'autres types de nœuds. -For instance, let's compare `tagName` and `nodeName` for the `document` and a comment node: +Par exemple, comparons `tagName` et `nodeName` pour le `document` et un nœud de commentaire : ```html run - + ``` -If we only deal with elements, then we can use both `tagName` and `nodeName` - there's no difference. +Si nous ne traitons que des éléments, nous pouvons utiliser à la fois `tagName` et `nodeName` - il n'y a pas de différence. -```smart header="The tag name is always uppercase except in XML mode" -The browser has two modes of processing documents: HTML and XML. Usually the HTML-mode is used for webpages. XML-mode is enabled when the browser receives an XML-document with the header: `Content-Type: application/xml+xhtml`. +```smart header="Le nom de la balise est toujours en majuscule sauf en mode XML" +Le navigateur a deux modes de traitement des documents: HTML et XML. Habituellement, le mode HTML est utilisé pour les pages Web. Le mode XML est activé lorsque le navigateur reçoit un document XML avec l'en-tête : `Content-Type: application/xml+xhtml`. -In HTML mode `tagName/nodeName` is always uppercased: it's `BODY` either for `` or ``. +En mode HTML, `tagName/nodeName` est toujours en majuscule : c'est `BODY` pour `` ou ``. -In XML mode the case is kept "as is". Nowadays XML mode is rarely used. +En mode XML, la casse est conservée "en l'état". De nos jours, le mode XML est rarement utilisé. ``` -## innerHTML: the contents +## innerHTML: les contenus -The [innerHTML](https://w3c.github.io/DOM-Parsing/#widl-Element-innerHTML) property allows to get the HTML inside the element as a string. +La propriété [innerHTML](https://w3c.github.io/DOM-Parsing/#widl-Element-innerHTML) permet d'obtenir le HTML à l'intérieur de l'élément sous forme de chaîne de caractères. -We can also modify it. So it's one of the most powerful ways to change the page. +Nous pouvons également le modifier. C'est donc l'un des moyens les plus puissants de modifier la page. -The example shows the contents of `document.body` and then replaces it completely: +L'exemple montre le contenu de `document.body` puis le remplace complètement : ```html run @@ -210,44 +210,44 @@ The example shows the contents of `document.body` and then replaces it completel
A div
``` -We can try to insert invalid HTML, the browser will fix our errors: +Nous pouvons essayer d'insérer du code HTML invalide, le navigateur corrigera nos erreurs : ```html run ``` -```smart header="Scripts don't execute" -If `innerHTML` inserts a ` ``` -**Beware: unlike `innerHTML`, writing to `outerHTML` does not change the element. Instead, it replaces it in the DOM.** +**Attention : contrairement à `innerHTML`, l'écriture dans `outerHTML` ne modifie pas l'élément. Au lieu de cela, il le remplace dans le DOM.** -Yeah, sounds strange, and strange it is, that's why we make a separate note about it here. Take a look. +Oui, cela semble étrange, et c'est étrange, c'est pourquoi nous en faisons une note séparée ici. Jetez-y un oeil. -Consider the example: +Prenons l'exemple : ```html run
Hello, world!
@@ -297,44 +297,44 @@ Consider the example: let div = document.querySelector('div'); *!* - // replace div.outerHTML with

...

+ // remplace div.outerHTML avec

...

*/!* div.outerHTML = '

A new element

'; // (*) *!* - // Wow! 'div' is still the same! + // Wow! 'div' est toujours la même ! */!* alert(div.outerHTML); //
Hello, world!
(**) ``` -Looks really odd, right? +Ça a l'air vraiment bizarre, non ? -In the line `(*)` we replaced `div` with `

A new element

`. In the outer document (the DOM) we can see the new content instead of the `
`. But, as we can see in line `(**)`, the value of the old `div` variable hasn't changed! +Dans la ligne `(*)` nous avons remplacé `div` par `

A new element

`. Dans le document externe (le DOM), nous pouvons voir le nouveau contenu au lieu de `
`. Mais, comme nous pouvons le voir dans la ligne `(**)`, la valeur de l'ancienne variable `div` n'a pas changé ! -The `outerHTML` assignment does not modify the DOM element (the object referenced by, in this case, the variable 'div'), but removes it from the DOM and inserts the new HTML in its place. +L'affectation `outerHTML` ne modifie pas l'élément DOM (l'objet référencé, dans ce cas, la variable 'div'), mais le supprime du DOM et insère le nouveau HTML à sa place. -So what happened in `div.outerHTML=...` is: -- `div` was removed from the document. -- Another piece of HTML `

A new element

` was inserted in its place. -- `div` still has its old value. The new HTML wasn't saved to any variable. +Donc, ce qui s'est passé dans `div.outerHTML=...` est : +- `div` a été supprimé du document. +- Un autre morceau du HTML `

A new element

` a été inséré à sa place. +- `div` a toujours son ancienne valeur. Le nouveau HTML n'a été enregistré dans aucune variable. -It's so easy to make an error here: modify `div.outerHTML` and then continue to work with `div` as if it had the new content in it. But it doesn't. Such thing is correct for `innerHTML`, but not for `outerHTML`. +Il est si facile de faire une erreur ici : modifiez `div.outerHTML` puis continuez à travailler avec `div` comme s'il contenait le nouveau contenu. Mais ce n'est pas le cas. Ce genre de chose est correcte pour `innerHTML`, mais pas pour `outerHTML`. -We can write to `elem.outerHTML`, but should keep in mind that it doesn't change the element we're writing to ('elem'). It puts the new HTML in its place instead. We can get references to the new elements by querying the DOM. +Nous pouvons écrire dans `elem.outerHTML`, mais nous devons garder à l'esprit que cela ne change pas l'élément dans lequel nous écrivons ('elem'). Il place le nouveau HTML à sa place. Nous pouvons obtenir des références aux nouveaux éléments en interrogeant le DOM. -## nodeValue/data: text node content +## nodeValue/data : contenu du nœud texte -The `innerHTML` property is only valid for element nodes. +La propriété `innerHTML` n'est valide que pour les nœuds élément. -Other node types, such as text nodes, have their counterpart: `nodeValue` and `data` properties. These two are almost the same for practical use, there are only minor specification differences. So we'll use `data`, because it's shorter. +D'autres types de nœuds, tels que les nœuds texte, ont leur contrepartie : les propriétés `nodeValue` et `data`. Ces deux sont presque les mêmes pour une utilisation pratique, il n'y a que des différences de spécifications mineures. Nous allons donc utiliser `data`, car il est plus court. -An example of reading the content of a text node and a comment: +Un exemple de lecture du contenu d'un nœud texte et d'un commentaire : ```html run height="50" Hello - + ``` -For text nodes we can imagine a reason to read or modify them, but why comments? +Pour les nœuds texte, nous pouvons imaginer une raison de les lire ou de les modifier, mais pourquoi des commentaires ? -Sometimes developers embed information or template instructions into HTML in them, like this: +Parfois, les développeurs incorporent des informations ou des instructions de modèle dans HTML, comme ceci : ```html @@ -359,13 +359,13 @@ Sometimes developers embed information or template instructions into HTML in the ``` -...Then JavaScript can read it from `data` property and process embedded instructions. +...Ensuite, JavaScript peut le lire à partir de la propriété `data` et traiter les instructions intégrées. -## textContent: pure text +## textContent: texte pur -The `textContent` provides access to the *text* inside the element: only text, minus all ``. +Le `textContent` donne accès au *texte* à l'intérieur de l'élément : seulement le texte, moins tous les ``. -For instance: +Par exemple : ```html run
@@ -379,18 +379,18 @@ For instance: ``` -As we can see, only text is returned, as if all `` were cut out, but the text in them remained. +Comme nous pouvons le voir, seul le texte est renvoyé, comme si tous les `` étaient supprimés, mais le texte qu'ils contenaient est resté. -In practice, reading such text is rarely needed. +En pratique, la lecture d'un tel texte est rarement nécessaire. -**Writing to `textContent` is much more useful, because it allows to write text the "safe way".** +**Ecrire dans `textContent` est beaucoup plus utile, car il permet d'écrire du texte de "manière sûre".** -Let's say we have an arbitrary string, for instance entered by a user, and want to show it. +Disons que nous avons une chaîne de caractères arbitraire, par exemple entrée par un utilisateur, et que nous voulons l'afficher. -- With `innerHTML` we'll have it inserted "as HTML", with all HTML tags. -- With `textContent` we'll have it inserted "as text", all symbols are treated literally. +- Avec `innerHTML` nous allons l'insérer "au format HTML", avec toutes les balises HTML. +- Avec `textContent` nous allons l'insérer "en tant que texte", tous les symboles sont traités littéralement. -Compare the two: +Comparez les deux : ```html run
@@ -404,16 +404,16 @@ Compare the two: ``` -1. The first `
` gets the name "as HTML": all tags become tags, so we see the bold name. -2. The second `
` gets the name "as text", so we literally see `Winnie-the-pooh!`. +1. La première `
` obtient le nom "en HTML" : toutes les balises deviennent des balises, nous voyons donc le nom en gras. +2. La seconde `
` obtient le nom "sous forme de texte", donc nous voyons littéralement `Winnie-the-pooh!`. -In most cases, we expect the text from a user, and want to treat it as text. We don't want unexpected HTML in our site. An assignment to `textContent` does exactly that. +Dans la plupart des cas, nous attendons le texte d'un utilisateur et souhaitons le traiter comme du texte. Nous ne voulons pas de HTML inattendu sur notre site. Une affectation à `textContent` fait exactement cela. -## The "hidden" property +## La propriété "cachée" -The "hidden" attribute and the DOM property specifies whether the element is visible or not. +L'attribut "hidden" (caché) et la propriété DOM spécifient si l'élément est visible ou non. -We can use it in HTML or assign using JavaScript, like this: +Nous pouvons l'utiliser dans le HTML ou l'attribuer en utilisant JavaScript, comme ceci : ```html run height="80"
Both divs below are hidden
@@ -427,9 +427,9 @@ We can use it in HTML or assign using JavaScript, like this: ``` -Technically, `hidden` works the same as `style="display:none"`. But it's shorter to write. +Techniquement, `hidden` fonctionne de la même manière que `style="display:none"`. Mais c'est plus court à écrire. -Here's a blinking element: +Voici un élément clignotant : ```html run height=50 @@ -440,16 +440,16 @@ Here's a blinking element: ``` -## More properties +## Plus de propriétés -DOM elements also have additional properties, in particular those that depend on the class: +Les éléments DOM ont également des propriétés supplémentaires, en particulier celles qui dépendent de la classe : -- `value` -- the value for ``, `