首頁 > web前端 > H5教程 > 主體

詳解H5的自訂屬性data-*

Y2J
發布: 2017-05-24 11:41:23
原創
2719 人瀏覽過

HTML5 增加了一項新功能是 自訂資料屬性 ,也就是  data-* 自訂屬性。在HTML5中我們可以使用以 data- 為前綴來設定我們需要的自訂屬性,來進行一些資料的存放

當然高階瀏覽器下可透過腳本進行定義和資料存取。在專案實務中非常有用。

例如:

程式碼如下:


使用attribute方法存取data-* 自訂屬性的值

#  使用attributes方法存取 data-* 自訂屬性的值非常方便:

程式碼如下:

 // 使用getAttribute获取 data- 属性

  var user = 
document
 . getElementById ( 'user' ) ;

  var userName = plant . getAttribute ( 'data-uname' ) ; // userName = '脚本之家'

  var userId = plant . getAttribute ( 'data-uid' ) ; // userId = '12345'

  // 使用
set
Attribute设置 data- 属性

  user . setAttribute ( 'data-site' , 'http://www.jb51.net' ) ;
登入後複製


此方法能在所有的現代瀏覽器中正常運作,但它不是HTML 5 的自訂data-*屬性被使用目的,不然和我們以前使用的自訂屬性就沒有什麼區別了,例如:

程式碼如下:

 <p id = "user" uid = "12345" uname = "脚本之家" > </p>

  <script>

  // 使用getAttribute获取 data- 属性

  var user = document . getElementById ( &#39;user&#39; ) ;

  var userName = plant . getAttribute ( &#39;uname&#39; ) ; // userName = &#39;脚本之家&#39;

  var userId = plant . getAttribute ( &#39;uid&#39; ) ; // userId = &#39;12345&#39;

  // 使用setAttribute设置 data- 属性

  user . setAttribute ( &#39;site&#39; , &#39;http://www.jb51.net&#39; ) ;

  </script>
登入後複製


#  這種「原始」的自訂屬性和上面 data-* 自訂屬性沒什麼差別,知識屬性名稱不一樣。

dataset屬性訪問data-*自訂屬性的值

這種方式透過存取一個元素的dataset 屬性來存取data-* 自訂屬性的值。這個dataset 屬性是HTML5 JavaScript API的一部分,用來傳回一個所有選擇元素data- 屬性的DOMStringMap #物件

使用這種方法時,不是使用完整的屬性名,如 data-uid 來存取數據,應該去掉data- 前綴。

還有一點特別注意的是: data- 屬性名如果包含了連字符,例如:data-date-of-birth ,連字符將被去掉,並轉換為駝峰式的命名,前面的屬性名稱轉換後應該是: dateOfBirth 。

程式碼如下:

 <p id="user" data-id="1234567890" data-name="脚本之家" data-date-of-birth>码头</p>
  <script type="text/javascript">
  var el = document.querySelector(&#39;#user&#39;);
  console.log(el.id); // &#39;user&#39;
  console.log(el.dataset);//一个DOMStringMap
  console.log(el.dataset.id); // &#39;1234567890&#39;
  console.log(el.dataset.name); // &#39;脚本之家&#39;
  console.log(el.dataset.dateOfBirth); // &#39;&#39;
  el.dataset.dateOfBirth = &#39;1985-01-05&#39;; // 设置data-date-of-birth的值.
  console.log(&#39;someDataAttr&#39; in el.dataset);//false
  el.dataset.someDataAttr = &#39;mydata&#39;;
  console.log(&#39;someDataAttr&#39; in el.dataset);//true
  </script>
登入後複製

 如果你想刪除一個 data-屬性 ,可以這麼做: delete el . dataset . id ;  或 el .dataset . id = null ;  。

看起來很美,哈哈,但不幸的是,新的dataset 屬性只有在Chrome 8+ Firefox(Gecko) 6.0+ Internet Explorer 11+ Opera 11.10+ Safari 6+瀏覽器中實現,所以在此期間最好用的getAttribute和setAttribute來操作。

關於data-屬性選擇器

在實際開發時,您可能會發現它很有用,你可以根據自訂的data - 屬性選擇相關的元素。例如使用querySelectorAll選擇元素:

程式碼如下:


 // 選取所有包含 'data-flowering' 屬性的元素
 document . querySelectorAll ( '[data-flowering]' ) ;

#  // 選擇所有包含 'data-text-colour' 屬性值為red的元素
 document . querySelectorAll ( '[data-text-colour="red"]' ) ;


同樣的我們也可以透過data- 屬性值對對應的元素設定CSS樣式,例如下面這個例子:

#程式碼如下:

 <style type ="text/css">

  .user {

  
width
 : 256px ;

  
height
 : 200px ;

  }

  .user[data-name=&#39;feiwen&#39;] {

  color : brown

  }

  .user[data-name=&#39;css&#39;] {

  color : red

  }

  </style>

  <p 
class
 = "user" data-id = "123" data-name = "feiwen" > 1 </p>

  <p class = "user" data-id = "124" data-name = "css" > 码头 </p>
登入後複製

【相關推薦】

1. Html5免費影片教學

2. 關於H5的事件屬性詳解

3. 」詳解H5非常重要的28個新功能,新技巧與新技術

4. H5製作計時器的程式碼示範

5. #H5完成多圖片上傳的實例詳解

#

以上是詳解H5的自訂屬性data-*的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!