訪問資料屬性
使用資料集屬性
新的 dataset
屬性允許訪問(用於讀取和寫入)任何元素上的所有資料屬性 data-*
。
<p>Countries:</p>
<ul>
<li id="C1" onclick="showDetails(this)" data-id="US" data-dial-code="1">USA</li>
<li id="C2" onclick="showDetails(this)" data-id="CA" data-dial-code="1">Canada</li>
<li id="C3" onclick="showDetails(this)" data-id="FF" data-dial-code="3">France</li>
</ul>
<button type="button" onclick="correctDetails()">Correct Country Details</button>
<script>
function showDetails(item) {
var msg = item.innerHTML
+ "\r\nISO ID: " + item.dataset.id
+ "\r\nDial Code: " + item.dataset.dialCode;
alert(msg);
}
function correctDetails(item) {
var item = document.getEmementById("C3");
item.dataset.id = "FR";
item.dataset.dialCode = "33";
}
</script>
注意:dataset
屬性僅在現代瀏覽器中受支援,並且比所有瀏覽器支援的 getAttribute
和 setAttribute
方法稍慢。
使用 getAttribute 和 setAttribute 方法
如果要在 HTML5 之前支援舊版瀏覽器,可以使用 getAttribute
和 setAttribute
方法,這些方法用於訪問任何屬性,包括資料屬性。上面例子中的兩個函式可以這樣寫:
<script>
function showDetails(item) {
var msg = item.innerHTML
+ "\r\nISO ID: " + item.getAttribute("data-id")
+ "\r\nDial Code: " + item.getAttribute("data-dial-code");
alert(msg);
}
function correctDetails(item) {
var item = document.getEmementById("C3");
item.setAttribute("id", "FR");
item.setAttribute("data-dial-code", "33");
}
</script>