Javascript 访问';数据-';不带jQuery的属性
我可以在没有jQuery的情况下访问数据属性吗 使用jQuery很容易,但是没有jQuery,我看不到任何地方如何实现 如果我在Google上搜索“没有jQuery”,我得到的只是jQuery示例 甚至可能吗?在上一篇文章中,我发现了这个例子:Javascript 访问';数据-';不带jQuery的属性,javascript,Javascript,我可以在没有jQuery的情况下访问数据属性吗 使用jQuery很容易,但是没有jQuery,我看不到任何地方如何实现 如果我在Google上搜索“没有jQuery”,我得到的只是jQuery示例 甚至可能吗?在上一篇文章中,我发现了这个例子: <div id='strawberry-plant' data-fruit='12'></div> <script> // 'Getting' data-attributes using getAttribut
<div id='strawberry-plant' data-fruit='12'></div>
<script>
// 'Getting' data-attributes using getAttribute
var plant = document.getElementById('strawberry-plant');
var fruitCount = plant.getAttribute('data-fruit'); // fruitCount = '12'
// 'Setting' data-attributes using setAttribute
plant.setAttribute('data-fruit', '7'); // Pesky birds
</script>
//使用getAttribute“获取”数据属性
var-plant=document.getElementById('草莓-plant');
var fruitCount=plant.getAttribute('data-fruit');//水果计数='12'
//使用setAttribute“设置”数据属性
plant.setAttribute('data-fruit','7');//讨厌的鸟
因此,这看起来非常可行
更新:由于微软现在(2020年)正在逐步淘汰旧的Internet Explorer引擎,取而代之的是基于铬的Edge,
dataset
属性很可能在任何地方都可以使用。在一段时间内,例外情况将是仍然强制使用IE的组织和公司网络。尽管如此,在撰写本文时-仍然显示get/setAttribute方法比使用dataset更快,至少在Chrome 81上是这样。它只是一个属性。。。与任何其他属性一样使用getAttribute
:
或者我没有抓住你问题的重点。你可以使用数据集属性。例如:
element = document.getElementById("el");
alert(element.dataset.name); // element.dataset.name == data-name
我想你可以试试这个:
var ele = document.getElementById("myelement");
if (ele.hasOwnProperty("data")) {
alert(ele.data);
}
或使用
alert(ele['data-property']);
这是一个古老的概念,但它让你继续前进:注意:虽然完全正确,但这只适用于兼容HTML5的浏览器。使用
getAttribute
方法可以在大多数浏览器上使用。虽然不一定向后兼容不推荐的浏览器(例如,IE的所有版本),但这是正确的答案。在当时(2013年),这当然是一种前瞻性思维,但现在5年过去了,这是应该采取的方式。这似乎是正确的方法。此外,您可能需要能够执行以下操作:document.getElementById('草莓植物').setAttribute('data-fruit','Some data Here');请参阅下面tomor关于数据集的回答-这是正确的答案,除非您必须支持不推荐的web浏览器(IE),如果是这样的话,这对您来说真的很不幸。。。现在所有的现代浏览器版本都支持HTML5和ECMAScript 5(当然)和6,看起来也比dataset更具可读性。大多数开发人员一开始都知道这一行代码的作用,但不太确定您是否可以对MDN文档中的数据集说同样的话,最好使用getAttribute方法,因为它速度更快,我在下面引用:*此外,与在JS数据仓库中存储此数据相比,读取数据属性的性能较差。使用dataset甚至比使用getAttribute()读取数据还要慢。**-