【发布时间】:2018-09-26 09:25:28
【问题描述】:
我一直在使用 .getAttribute,今天发现了 .dataset,所以我想知道它们的区别是什么以及何时应该使用它们。
所以这里是一个例子。假设我们有一个段落:
<p class="test" data-something="this is a test">some text</p>
如果我们使用 .getAttribute
let testText = document.querySelector('.test');
let testGetAttribute = testText.getAttribute('data-something');
console.log(testGetAttribute);
我们得到“这是一个测试”的输出。
如果我们使用 .dataset
let testText = document.querySelector('.test');
let testDataset = testText.dataset.something;
console.log(testDataset);
我们也得到“这是一个测试”。
那么,这两种方法有区别吗?使用其中一种有什么好处吗?
谢谢!
【问题讨论】:
-
在 HTML 中,您应该只添加指定为属于特定 HTML 元素的属性。如果您创建自己的命名属性,则可能会与当前或将来的属性名称发生名称冲突。因此创建了 data-* 属性,因此您可以将其用作您希望添加的任何属性的前缀。其余的您可以从MDN 获得。 dataset 的使用只是一个方便的getter,而不是使用
element.getAttribute(data-whatever)。 -
dataset较新,可在当前浏览器中运行,并且代码可读性更好,但如果您要处理大量data属性,则getAttribute会更慢,尽管速度较慢对于较小的情况,差异可以忽略不计,dataset很好。见jsperf.com/getattribute-vs-dataset -
datasetcompatibility 真的很好,所以除了性能之外它几乎不会在任何地方崩溃
标签: javascript dataset getattribute