Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问';数据-';不带jQuery的属性_Javascript - Fatal编程技术网

Javascript 访问';数据-';不带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

我可以在没有jQuery的情况下访问数据属性吗

使用jQuery很容易,但是没有jQuery,我看不到任何地方如何实现

如果我在Google上搜索“没有jQuery”,我得到的只是jQuery示例

甚至可能吗?

在上一篇文章中,我发现了这个例子:

<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()读取数据还要慢。**-