【发布时间】:2012-03-01 07:47:19
【问题描述】:
根据the dataset spec,element.dataset是怎么删除数据属性的?考虑:
<p id="example" data-a="string a" data-b="string b"></p>
如果你这样做:
var elem = document.querySelector('#example');
elem.dataset.a = null;
elem.dataset.b = undefined;
elem.dataset.c = false;
elem.dataset.d = 3;
elem.dataset.e = [1, 2, 3];
elem.dataset.f = {prop: 'value'};
elem.dataset.g = JSON.stringify({prop: 'value'});
DOM 在 Chrome 和 Firefox 中变成这样:
<p id="example"
data-a="null"
data-b="undefined"
data-c="false"
data-d="3"
data-e="1,2,3"
data.f="[object Object]"
data.g="{"prop":"value"}"
></p>
Chrome/Firefox 实现模仿 setAttribute。它基本上首先应用.toString()。除了null 的处理之外,这对我来说是有意义的,因为我希望null 会删除该属性。否则,数据集 API 如何做相当于:
elem.removeAttribute('data-a');
布尔属性呢:
<p data-something> 等价于<p data-something=""> 嗯。
【问题讨论】:
标签: javascript web-standards html5-data