.prop()和.attr區別

attribute和property區別

  1. 非自定義屬性的attribute,如id,class等都有對應的property。html

  2. 自定義屬性的attribute沒有對應的property。 node

  3. attribute不能從property中得到同步。數組

  4. property能從attribute中得到同步。dom

  5. 更改property和attribute上的任意值,(除下列特殊狀況)都會將更新反映到HTML頁面中。函數

  6. 訪問內置的HTML attributes,這些attribute不能從property同步過來。例如input標籤的value 值。 3d

  7. class 爲JavaScript的保留關鍵字,經過property操做class時應使用 classNamecdn

  8. 對於一些和路徑相關的屬性,二者取得值也不盡相同,可是一樣attribute取得是字面量,property取得是計算後的完整路徑htm

  9. attribute的checked、selected、disabled就是表示該屬性初始狀態的值。對象

  10. property的checked、selected、disabled才表示該屬性實時狀態的值(值爲true或false)。blog

  11. 對於值是true/false的property,attribute取得值是HTML文檔字面量值,property是取得計算結果,property改變並不影響attribute字面量,但attribute改變會影響property計算。

node.getAttribute('someAttribute')和node.someAttribute的區別

node.getAttribute('someAttribute')獲取的是attribute,而node.someAttribute獲取的是元素的property

  • node.property的方式不能獲取自定義屬性,node.getAttribute()的方式能夠獲取自定義屬性。
  • node. getAttribute()獲取自定義屬性忽略屬性的大小寫。
  • node.getAttribute()獲取自定義屬性獲得的值的類型老是字符串。

attr()和prop()的區別

  • attr()函數針對的是該文檔節點的attribut,是HTML標籤上的特性

  • prop()函數針對的是DOM元素自身的property,是DOM中的屬性

  • attr()設置的屬性值只能是字符串類型。

  • prop()設置的屬性值能夠爲包括數組和對象在內的任意類型

  • attr()函數主要依賴的是Element對象的getAttribute()setAttribute() 兩個方法。

  • prop()函數主要依賴的則是JS中原生的對象屬性獲取和設置方式

儘可能使用prop()函數來設置或獲取checked、selected、disabled等屬性

能用prop(),就用prop()

參考文檔:

  1. joji.me/zh-cn/blog/…
  2. www.cnblogs.com/elcarim5efi…
相關文章
相關標籤/搜索