You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 2-ui/1-document/05-basic-dom-node-properties/article.md
+12-12Lines changed: 12 additions & 12 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -76,7 +76,7 @@ Try it on `document.body`.
76
76
```
77
77
78
78
````smart header="IDL in the spec"
79
-
In the specification classes are described using not JavaScript, but a special [Interface description language](https://en.wikipedia.org/wiki/Interface_description_language) (IDL), that is usually easy to understand.
79
+
In the specification, classes are described not using JavaScript, but a special [Interface description language](https://en.wikipedia.org/wiki/Interface_description_language) (IDL), that is usually easy to understand.
80
80
81
81
In IDL all properties are prepended with their types. For instance, `DOMString`, `boolean` and so on.
82
82
@@ -163,19 +163,19 @@ Sure, the difference is reflected in their names, but is indeed a bit subtle.
163
163
- The `tagName` property exists only for `Element` nodes.
164
164
- The `nodeName` is defined for any `Node`:
165
165
- for elements it means the same as `tagName`.
166
-
- for other node types (text, comment etc) it has a string with the node type.
166
+
- for other node types (text, comment, etc.) it has a string with the node type.
167
167
168
168
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.
169
169
170
-
For instance let's compare `tagName` and `nodeName` for the `document` and a comment node:
170
+
For instance, let's compare `tagName` and `nodeName` for the `document` and a comment node:
@@ -218,7 +218,7 @@ The example shows the contents of `document.body` and then replaces it completel
218
218
</body>
219
219
```
220
220
221
-
We can try to insert an invalid HTML, the browser will fix our errors:
221
+
We can try to insert invalid HTML, the browser will fix our errors:
222
222
223
223
```html run
224
224
<body>
@@ -461,35 +461,35 @@ Most standard HTML attributes have the corresponding DOM property, and we can ac
461
461
462
462
If we want to know the full list of supported properties for a given class, we can find them in the specification. For instance, HTMLInputElement is documented at <https://html.spec.whatwg.org/#htmlinputelement>.
463
463
464
-
Or if we'd like to get them fast or interested in the concrete browser -- we can always output the element using `console.dir(elem)` and read the properties. Or explore "DOM properties" in Elements tab of the browser developer tools.
464
+
Or if we'd like to get them fast or are interested in a concrete browser specification -- we can always output the element using `console.dir(elem)` and read the properties. Or explore "DOM properties" in the Elements tab of the browser developer tools.
465
465
466
466
## Summary
467
467
468
-
Each DOM node belongs to a certain class. The classes form a hierarchy. The full set of properties and methods comes as the result of inheritance.
468
+
Each DOM node belongs to a certain class. The classes form a hierarchy. The full set of properties and methods come as the result of inheritance.
469
469
470
470
Main DOM node properties are:
471
471
472
472
`nodeType`
473
-
: Node type. We can get it from the DOM object class, but often we need just to see if it is a text or element node. The `nodeType` property is good for that. It has numeric values, most important are: `1` -- for elements,`3` -- for text nodes. Read-only.
473
+
: We can get `nodeType` from the DOM object class, but often we need just to see if it is a text or element node. The `nodeType` property is good for that. It has numeric values, most important are: `1` -- for elements,`3` -- for text nodes. Read-only.
474
474
475
475
`nodeName/tagName`
476
-
: For elements, tag name (uppercased unless XML-mode). For non-element nodes `nodeName` describes what is it. Read-only.
476
+
: For elements, tag name (uppercased unless XML-mode). For non-element nodes `nodeName` describes what it is. Read-only.
477
477
478
478
`innerHTML`
479
-
: The HTML content of the element. Can modify.
479
+
: The HTML content of the element. Can be modified.
480
480
481
481
`outerHTML`
482
482
: The full HTML of the element. A write operation into `elem.outerHTML` does not touch `elem` itself. Instead it gets replaced with the new HTML in the outer context.
483
483
484
484
`nodeValue/data`
485
-
: The content of a non-element node (text, comment). These two are almost the same, usually we use `data`. Can modify.
485
+
: The content of a non-element node (text, comment). These two are almost the same, usually we use `data`. Can be modified.
486
486
487
487
`textContent`
488
488
: The text inside the element, basically HTML minus all `<tags>`. Writing into it puts the text inside the element, with all special characters and tags treated exactly as text. Can safely insert user-generated text and protect from unwanted HTML insertions.
489
489
490
490
`hidden`
491
491
: When set to `true`, does the same as CSS `display:none`.
492
492
493
-
DOM nodes also have other properties depending on their class. For instance, `<input>` elements (`HTMLInputElement`) support `value`, `type`, while `<a>` elements (`HTMLAnchorElement`) support `href` etc. Most standard HTML attributes have the corresponding DOM property.
493
+
DOM nodes also have other properties depending on their class. For instance, `<input>` elements (`HTMLInputElement`) support `value`, `type`, while `<a>` elements (`HTMLAnchorElement`) support `href` etc. Most standard HTML attributes have a corresponding DOM property.
494
494
495
495
But HTML attributes and DOM properties are not always the same, as we'll see in the next chapter.
0 commit comments