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
+11-11Lines changed: 11 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,7 +6,7 @@ In questo capitolo vedremo meglio cosa sono e impareremo le loro proprietà più
6
6
7
7
## Le classi dei nodi del DOM
8
8
9
-
Nodi del DOM differenti possono avere proprietà differenti. Ad esempio, un nodo elemento corrispondente ad un tag `<a>` avrà proprietà tipiche dei link ed un nodo corrispondente al tag `<input>` avrà proprietà tipiche dei campi di testo e così via. I nodi di testo sono differenti dai nodi elemento, tuttavia condividono anche proprietà e metodi comuni a tutti perché tutte le classi dei nodi del DOM costituiscono un'unica gerarchia.
9
+
Nodi del DOM differenti possono avere proprietà differenti. Ad esempio, un nodo elemento corrispondente ad un tag `<a>` avrà proprietà tipiche dei link ed un nodo corrispondente al tag `<input>` avrà proprietà tipiche dei campi di testo e così via. I nodi di testo sono differenti dai nodi elemento, tuttavia condividono alcune proprietà e metodi comuni a tutti, perché tutte le classi dei nodi del DOM costituiscono un'unica gerarchia.
10
10
11
11
Ogni nodo del DOM appartiene alla corrispondente classe nativa.
Come possiamo notare i nodi DOM sono oggetti JavaScript regolari ed usano classi basate sui prototipi per l'ereditarietà.
67
67
68
-
Questo è anche facile da osservare esaminando un elemento in un browser con `console.dir(elem)`. Nella console potremo vedere `HTMLElement.prototype`, `Element.prototype` e così via.
68
+
Questo è facilmente osservabile esaminando un elemento in un browser con `console.dir(elem)`. Nella console potremo vedere `HTMLElement.prototype`, `Element.prototype` e così via.
69
69
70
70
```smart header="`console.dir(elem)` versus `console.log(elem)`"
71
-
La maggior parte dei browser supportano due comandi nei loro strumenti per sviluppatori: `console.log` e `console.dir` che mostrano in console i loro argomenti. Per quanto riguarda gli oggetti JavaScript solitamente questi comandi funzionano allo stesso modo.
71
+
La maggior parte dei browser supportano due comandi nei loro strumenti per sviluppatori: `console.log` e `console.dir` che mostrano in console i loro argomenti. Per quanto riguarda gli oggetti JavaScript, solitamente questi comandi funzionano allo stesso modo.
72
72
73
73
Ma per gli elementi DOM sono differenti:
74
74
@@ -83,7 +83,7 @@ Nella specifica, le classi DOM non sono descritte con JavaScript, ma con uno spe
83
83
84
84
Nell'IDL tutte le proprietà sono precedute dai rispettivi tipi. Per esempio `DOMString`, `boolean` e così via.
85
85
86
-
Eccone un estratto, con commenti:
86
+
Eccone un estratto commentato:
87
87
88
88
```js
89
89
// Definisce HTMLInputElement
@@ -199,9 +199,9 @@ In modalità XML il case viene mantenuto "così com'è". Ai giorni nostri la mod
199
199
200
200
La proprietà [innerHTML](https://w3c.github.io/DOM-Parsing/#the-innerhtml-mixin) consente di ottenere una stringa contenente l'HTML dentro l'elemento.
201
201
202
-
Possiamo anche modificarla e pertanto è uno dei più potenti strumenti per cambiare la pagina.
202
+
Possiamo anche modificarla e pertanto è uno dei più potenti strumenti per cambiare l'HTML di un elemento della pagina.
203
203
204
-
L'esempio mostra il contenuto di `document.body` e quindi lo rimpiazza completamente:
204
+
L'esempio mostra il contenuto di `document.body` e poi lo rimpiazza completamente:
205
205
206
206
```html run
207
207
<body>
@@ -229,7 +229,7 @@ Se proviamo a inserire HTML non valido, il browser correggerà i nostri errori:
229
229
</body>
230
230
```
231
231
232
-
```smart header="I tag <script> non vengono eseguiti"
232
+
```smart header="I tag `<script>` non vengono eseguiti"
233
233
Se `innerHTML` inserisce un tag `<script>` nel documento -- esso diviene parte dell'HTML ma non viene eseguito.
234
234
```
235
235
@@ -263,7 +263,7 @@ In altre parole, `innerHTML+=` fa questo:
263
263
264
264
**Poiché il contenuto viene "azzerato" e riscritto da zero, tutte le immagini e le altre risorse verranno ricaricate**.
265
265
266
-
Nell'esempio `chatDiv` sopra, la linea `chatDiv.innerHTML+="How goes?"` ricrea il contenuto HTML e ricarica `smile.gif` (speriamo sia in cache). Se `chatDiv` ha molto altro testo e immagini, in quel caso, il tempo di ricaricamento potrebbe diventare chiaramente percepibile.
266
+
Nell'esempio `chatDiv` sopra, la linea `chatDiv.innerHTML+="How goes?"` ricrea il contenuto HTML e ricarica `smile.gif` (speriamo sia in cache). Se `chatDiv` ha molto altro testo e immagini il tempo di ricaricamento potrebbe diventare chiaramente percepibile.
267
267
268
268
Ci sono anche altri effetti collaterali. Per esempio, se il testo esistente era stato selezionato con il mouse, la maggior parte dei browser rimuoveranno la selezione al momento della riscrittura con `innerHTML`. Se un elemento `<input>` conteneva un testo digitato dal visitatore il testo sarà rimosso, e altri casi simili.
269
269
@@ -309,7 +309,7 @@ Considerate l'esempio:
309
309
310
310
Sembra davvero strano, vero?
311
311
312
-
Nella linea `(*)` sostituiamo `div` con `<p>A new element</p>`. Nel documento (il DOM) possiamo osservare che il nuovo contenuto ha preso il posto di `<div>`. Tuttavia, come possiamo notare nella linea `(**)`, il precedente valore della variabile `div`non è cambiato!
312
+
Nella linea `(*)` sostituiamo `div` con `<p>A new element</p>`. Nel documento (il DOM) possiamo osservare che il nuovo contenuto ha preso il posto di `<div>`. Tuttavia, come possiamo notare nella linea `(**)`, il precedente valore della variabile `div`non è cambiato!
313
313
314
314
L'assegnazione con `outerHTML` non cambia l'elemento (cioè l'oggetto a cui fa riferimento, in questo caso, la variabile 'div'), però lo rimuove dal DOM e inserisce il nuovo HTML al suo posto.
315
315
@@ -466,7 +466,7 @@ Se desideriamo conoscere la lista completa delle proprietà supportate per una c
466
466
467
467
In alternativa, se vogliamo ricavarle rapidamente o siamo interessati ad una concreta implementazione del browser -- possiamo sempre esaminare l'elemento con `console.dir(elem)` e leggerne le proprietà o, ancora, esplorare le "Proprietà DOM" nel tab Elementi degli strumenti per sviluppatori del browser.
468
468
469
-
## Sommario
469
+
## Riepilogo
470
470
471
471
Ciascun nodo del DOM appartiene ad una determinata classe. Le classi costituiscono una gerarchia. L'elenco completo delle proprietà e dei metodi è il risultato dell'ereditarietà.
472
472
@@ -476,7 +476,7 @@ Le principali proprietà di un nodo DOM sono:
476
476
: Possiamo utilizzarla per sapere se si tratta di un nodo di testo o di un nodo elemento. Ha un valore numerico: `1` per gli elementi, `3` per i nodi di testo e pochi altri valori per gli altri tipi di nodo. La proprietà è in sola lettura.
477
477
478
478
`nodeName/tagName`
479
-
: Per gli elementi indica il nome del tag (in lettere maiuscole a meno che il browser non sia in modalità XML). Per tutti gli altri nodi `nodeName` contiene una stringa destrittiva. La proprietà è in sola lettura.
479
+
: Per gli elementi indica il nome del tag (in lettere maiuscole a meno che il browser non sia in modalità XML). Per tutti gli altri nodi `nodeName` contiene una stringa descrittiva. La proprietà è in sola lettura.
480
480
481
481
`innerHTML`
482
482
: Il contenuto HTML dell'elemento. Può essere modificato.
0 commit comments