[Javascript] Qual è la differenza tra proprietà e attributi in HTML?


Answers

Le risposte spiegano già come attributi e proprietà sono gestiti in modo diverso, ma vorrei davvero sottolineare quanto totalmente folle sia. Anche se è in qualche misura la specifica.

È assurdo avere alcuni attributi (es. Id, class, foo, bar ) per mantenere solo un tipo di valore nel DOM, mentre alcuni attributi (ad es . Selezionato, selezionato ) mantengono due valori; cioè, il valore "quando è stato caricato" e il valore dello "stato dinamico". (Il DOM non dovrebbe rappresentare lo stato del documento in tutta la sua estensione?)

È assolutamente essenziale che due campi di input , ad esempio un testo e una casella di controllo, si comportino allo stesso modo . Se il campo di immissione del testo non conserva un valore separato "quando è stato caricato" e il valore "corrente, dinamico", perché la casella di controllo? Se la casella di controllo ha due valori per l'attributo verificato , perché non ha due attributi di classe e ID ? Se ti aspetti di cambiare il valore di un campo di testo * input *, e ti aspetti che il DOM (cioè la "rappresentazione serializzata") cambi, e rifletta questo cambiamento, perché mai non ti aspetteresti lo stesso da un campo di input di digitare checkbox sull'attributo selezionato?

La differenziazione, di "è un attributo booleano", per me non ha alcun senso, o almeno non è una ragione sufficiente per questo.

Question

Dopo le modifiche apportate in jQuery 1.6.1, ho cercato di definire la differenza tra proprietà e attributi in HTML.

Osservando l'elenco delle note di rilascio di jQuery 1.6.1 (in basso), sembra possibile classificare proprietà e attributi HTML come segue:

  • Proprietà: tutto ciò che ha un valore booleano o che è calcolato UA come selectIndex.

  • Attributi: "Attributi" che possono essere aggiunti a un elemento HTML che non è né booleano né contiene un valore generato da UA.

Pensieri?