非自定義屬性的attribute,如id,class等都有對應的property。html
自定義屬性的attribute沒有對應的property。 node
attribute不能從property中得到同步。數組
property能從attribute中得到同步。dom
更改property和attribute上的任意值,(除下列特殊狀況)都會將更新反映到HTML頁面中。函數
訪問內置的HTML attributes,這些attribute不能從property同步過來。例如input標籤的value 值。 3d
class 爲JavaScript的保留關鍵字,經過property操做class時應使用 className。 cdn
對於一些和路徑相關的屬性,二者取得值也不盡相同,可是一樣attribute取得是字面量,property取得是計算後的完整路徑。 htm
attribute的checked、selected、disabled就是表示該屬性初始狀態的值。對象
property的checked、selected、disabled才表示該屬性實時狀態的值(值爲true或false)。blog
對於值是true/false的property,attribute取得值是HTML文檔字面量值,property是取得計算結果,property改變並不影響attribute字面量,但attribute改變會影響property計算。
node.getAttribute('someAttribute')獲取的是attribute,而node.someAttribute獲取的是元素的property
attr()函數針對的是該文檔節點的attribut,是HTML標籤上的特性。
prop()函數針對的是DOM元素自身的property,是DOM中的屬性。
attr()設置的屬性值只能是字符串類型。
prop()設置的屬性值能夠爲包括數組和對象在內的任意類型。
attr()函數主要依賴的是Element對象的getAttribute() 和setAttribute() 兩個方法。
prop()函數主要依賴的則是JS中原生的對象屬性獲取和設置方式。
儘可能使用prop()函數來設置或獲取checked、selected、disabled等屬性
能用prop(),就用prop()
參考文檔: