关于自定义属性的获取问题,把自定义属性写在行间,问什么获取不到值?

<body>

<div id="div1" index="2"></div>

<script type="text/javascript">

var div = document.getElementById('div1');
alert(div.index)----》已在行间自定义属性值设为2,为什么获取不到?
div.index = 1;----》在js中设置了自定义属性值为1之后,在下面一行可以获取到值?
alert(div.index)
div.setAttribute('index','3');
alert(div.getAttribute('index'))
//alert(div.getAttribute('index'))
//alert(div['id'])

</script>
</body>

阅读 3.8k
3 个回答

因为div.index === undefined,当执行div.index = 1;时,index才被定义。

不修改HTML

在IE中:

var index = document.getElementById('div1').index;

Other:

var index = document.getElementById('div1').getAttribute(`index`);

HTML5

如果你想要使用的是 HTML 5 的自定义属性,你应该将属性命名为data-*(即date-index)。

这样使用它:

var index = document.getElementById('div1').dataset.index;

var index = document.getElementById('div1').getAttribute('index');

alert(index);

首先要有一个property跟attribute的概念
在dom元素创建的时候默认有id value等,写在标签内生成的时候也就是替换值,自定义的属性是不存在property内的(可以通过直接访问元素.id 与元素.自定义属性判断)

而自定义的属性放在了attributes里面
通过getAttribute setAttribute访问更改
而操作Attribue的时候,是会影响到到property内以及自定义属性的,所以我们修改attribute时候会使得自定义属性或者id之类的改变
而修改property的时候,例如修改元素的value值之类的却是不会映射到attribute的
具体的映射影响关系
你可以找找网上一些博文
了解property与attribute的区别

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题