Javascript 数据名称(数据集)属性未正确报告

Javascript 数据名称(数据集)属性未正确报告,javascript,dom,attributes,dataset,Javascript,Dom,Attributes,Dataset,我在元素节点El.dataset.FTid=I;,上创建了一个自定义数据集属性;,其中i是一个数字,但当我使用El.attributes查看它时,属性名称报告为data-f-tid,而不是预期的data-FTid。很奇怪!Firefox 63.0.3 64位。设置DOM元素数据集集合的属性时,它们将自动转换为相应的属性名称,如下所示: camelCase到dash样式:相反的转换,映射一个键 对于属性名称,使用以下规则: 限制: 破折号后面不能紧跟ASCII 转换前的小写字母a到z 前缀data

我在元素节点El.dataset.FTid=I;,上创建了一个自定义数据集属性;,其中i是一个数字,但当我使用El.attributes查看它时,属性名称报告为data-f-tid,而不是预期的data-FTid。很奇怪!Firefox 63.0.3 64位。

设置DOM元素数据集集合的属性时,它们将自动转换为相应的属性名称,如下所示:

camelCase到dash样式:相反的转换,映射一个键 对于属性名称,使用以下规则:

限制:

破折号后面不能紧跟ASCII 转换前的小写字母a到z

前缀data-is 增加

任何ASCII大写字母A到Z都转换为破折号 后跟其小写对应项

其他字符保留 不变

在您的情况下,您可能应该使用:

El.dataset.ftId = i;
可通过以下途径访问:

El.getAttribute('data-ft-id')

我的评论被自动删除了。我说我在JavaScript代码中尝试了将属性小写,效果非常好。我使用的文档没有描述这一点。是的,我确实忘记了所有HTML属性都不区分大小写。@DavidSpitter我相信你的评论是针对另一个被删除的答案的。那个人是完全正确的,他的属性是不敏感的。但是,在将值设置到数据集集合时,您可以使用大写字符,这些值将被转换,如本回答中所述。我会选择不同的设计,因为属性不区分大小写:我会将所有大写字符静默地转换为小写。任何高端开发人员都可以发明自己的方案来表示大写字符,如果他们愿意的话。@DavidSpitter是的,这不是世界上最直观的事情。其思想是,按照惯例,JS中的属性和变量名并不确定这是一个书面约定,但在camelCase中,HTML数据属性值是用破折号分隔的。因此,将它们相互转化是有意义的。顺便说一下,如果有帮助的话,把答案标记为“接受”。